我已经为我的webAPI配置了AzureAd令牌身份验证,但在swagger页面中,它显示的是实际的clientId值,但我不想向最终用户显示ClientId的实际值。这意味着在代码中,我可以硬编码,但在swagger页面中,我想显示一些虚拟值,这如何实现?在clientId文本框中,我想传递任何随机值,如“swaggerClient”
services.AddSwaggerGen(op =>
{
var openApi = new OpenApiSecurityScheme
{
Flows = new OpenApiOAuthFlows
{
AuthorizationCode = new OpenApiOAuthFlow
{
AuthorizationUrl = "https://abcde.com",
Scopes = new Dictionary<string, string>
{
{ Scope, "mvc1"}
},
TokenUrl = "https://abcde.com/token"
}
},
In = ParameterLocation.Header,
Name = "Authorization",
Type = SecuritySchemeType.OAuth2
};
op.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "oauth2"
}
},
new string[] {}
}
});
options.AddSecurityDefinition("oauth2", openApi);
options.OperationFilter<SecurityRequirementsOperationFilter>();
});
1条答案
按热度按时间3zwtqj6y1#
Client_id不被隐藏,因为它不是OAuth规范RFC 6749 -OAuth 2.0授权框架所指示的秘密,并且它被暴露给资源所有者,并且必须与客户端秘密沿着用于客户端认证,并且秘密无论如何都被隐藏。
请检查是否可以通过将
SchemaFilter
与IgnoreDataMember
一起使用(类似于C# ASP.NET : Hide model properties from Swagger doc - DEV Community)来隐藏参数或者按照kievu在github issue中建议的
changing the DOM
属性你可以提出一个天蓝色的support request或swagger support关于相同的。
参考资料: