为SwaggerUI启用了AuthUsePkce,但服务器返回pkce_missing_challenge



我在我的asp . net core 3.0应用程序中使用版本v5.0.0的Swashbuckle:

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

但是认证服务器返回错误:

pkce_missing_challenge

下面是Auth服务器接收到的请求日志:

/oauth2/v1/授权? response_type = code& client_id = xxxxxxxxxxxxx& redirect_uri 3 = https % % 2 f % 2 flocalhost % 3 a8002 % 2 fdocs % 2 foauth2-redirect.html&国家= = openid&范围VHVlIE1hciAwMiAyMDIxIDExOjIyOjM3IEdNVCswMDAwIChXZXN0ZXJuIEV1cm9wZWFuIFN0YW5kYXJkIFRpbWUp

所以与其"Pkce"由于这个原因,我使用了以下配置:

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" },
},
}
},
});

最新更新