Приложение Swagger теперь является clientCredentials - PullRequest
0 голосов
/ 10 мая 2019

Используя swagger 2 в коде NetCore, я не понимаю, как использовать поток приложений (используя client-id и client-secret)

В официальном документе (https://swagger.io/docs/specification/authentication/) я нашел это:

Потоки OAuth 2 были переименованы в соответствии со спецификацией OAuth 2: код доступа теперь является кодом авторизации, а приложение теперь 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 голосов
/ 13 мая 2019

Документация, на которую вы ссылаетесь, относится к OpenAPI 3.0, однако вы используете Swashbuckle, который использует OpenAPI 2.0.Спецификация OpenAPI 2.0 для определений безопасности находится здесь:
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#security-scheme-object

Вот почему код ожидает имена потоков OAuth, используемые в OpenAPI 2.0 (в данном случае application), а не те, которые используются в OpenAPI 3.0(clientCredentials).

...