使用NetCore代码中的swagger 2,我不了解如何使用应用程序流(使用client-id和client-secret)
在官方文档(https://swagger.io/docs/specification/authentication/)中,我发现了这一点:
OAuth 2流已重命名以匹配OAuth 2规范: accessCode现在是authorizationCode,应用程序现在 clientCredentials。
但这不起作用
// Activate swagger json file generation
services.AddSwaggerGen(
options =>
{
var scheme = new OAuth2Scheme
{
Type = "oauth2",
Flow = "clientCredentials",
AuthorizationUrl = "https://fs.xxx.com/adfs/oauth2/authorize",
TokenUrl = "https://fs.xxx.com/adfs/oauth2/token",
};
options.AddSecurityDefinition("oauth2", scheme);
options.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>>
{
{ "oauth2", Array.Empty<string>() }
});
我不明白...此文档是否最新?
答案 0 :(得分:0)
您链接到的文档适用于OpenAPI 3.0,但是您正在使用使用OpenAPI 2.0的Swashbuckle。用于安全性定义的OpenAPI 2.0规范位于:
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#security-scheme-object
这就是为什么代码期望使用OpenAPI 2.0(在这种情况下为application
)而不是OpenAPI 3.0(clientCredentials
)中使用的OAuth流名称。