Включен AuthUsePkce для SwaggerUI, но сервер возвращает pkce_missing_challenge

Я использую Swashbuckle версии v5.0.0 в моем приложении asp net core 3.0:

options.AddSecurityDefinition("OAuth2", new OpenApiSecurityScheme
        {
            Type = SecuritySchemeType.OAuth2,

            Flows = new OpenApiOAuthFlows
            {
                AuthorizationCode = new OpenApiOAuthFlow
                {
                    AuthorizationUrl = new Uri("https://my.okta.com/oauth2/v1/authorize"),
                    TokenUrl = new Uri("https://my.okta.com/oauth2/v1/token"),
                    Scopes = new Dictionary<string, string>
                        {
                        { "openid", "desc" }
                        },
                }
            },
            Description = "Balea Server OpenId Security Scheme"
        });

app.UseSwaggerUI(options =>
            {
            options.RoutePrefix = "docs";
          
            options.OAuthScopeSeparator(",");
            options.OAuthUsePkce();
            });

Но сервер Auth возвращает ошибку:

pkce_missing_challenge

Вот журнал запросов, который получает сервер Auth:

/oauth2/v1/authorize?response_type=code&client_id=xxxxxxxxxxxxx&redirect_uri=https%3A%2F%2Flocalhost%3A8002%2Fdocs%2Foauth2-redirect.html&scope=openid&state=VHVlIE1hciAwMiAyMDIxIDExOjIyOjM3IEdNVCswMDAwIChXZXN0ZXJuIEV1cm9wZWFuIFN0YW5kYXJkIFRpbWUp


person Babak Fakhriloo    schedule 02.03.2021    source источник
comment
Можете ли вы подробно описать свою проблему и предоставить больше кода о своем запуске? Вы не можете пройти авторизацию или какая-то другая проблема?   -  person Yinqiu    schedule 03.03.2021
comment
@Yinqiu, моя цель - получить accesstoken от okta и предоставить его для чванства, поэтому каждый раз, когда я хочу попробовать конечную точку, accesstoken передается по запросу. Я поделился чванливой частью стартапа, какой еще частью вам нужно поделиться?   -  person Babak Fakhriloo    schedule 03.03.2021


Ответы (1)


Поэтому вместо Pkce я использовал следующую конфигурацию благодаря this:

options.AddSecurityDefinition("OAuth2", new OpenApiSecurityScheme
            {
                Type = SecuritySchemeType.OAuth2,
                Flows = new OpenApiOAuthFlows
                {
                    Implicit = new OpenApiOAuthFlow
                    {
                        AuthorizationUrl = new Uri($"mydomain.com/oauth2/default/v1/authorize"),
                        TokenUrl = new Uri($"mydomain.com/oauth2/default/v1/token"),
                        Scopes = new Dictionary<string, string>
                            {
                            { "openid", "test" },
                            },
                    }
                },
            });
person Babak Fakhriloo    schedule 05.03.2021