Swagger应用程序现在是clientCredentials

时间:2019-05-10 11:54:34

标签: authentication swagger swagger-2.0

使用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>() }
        });

我不明白...此文档是否最新?

1 个答案:

答案 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流名称。

相关问题