如何解决AuthorizationCode流上的Swagger UI Auth错误
我已将SwaggerUI配置为与LinkedIn使用AuthorizationCode流。这是我的配置。
Startup.cs CongfigureServices 方法:
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1",new OpenApiInfo
{
Title = "My Api",Version = "v1"
});
options.AddSecurityDefinition("OAuth2",new OpenApiSecurityScheme
{
Type = SecuritySchemeType.OAuth2,Flows = new OpenApiOAuthFlows
{
AuthorizationCode = new OpenApiOAuthFlow
{
AuthorizationUrl = new Uri(appSettings.Security.Jwt.AuthUrl),Scopes = new Dictionary<string,string>
{
{ "r_liteprofile","" },{ "r_emailaddress","" }
},}
}
});
options.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,Id = "Bearer"
},Scheme = "OAuth2",Name = "Authorization",In = ParameterLocation.Header
},new string [] {}
}
});
});
Startup.cs 中的配置方法
app
.UseSwagger()
.UseSwaggerUI(option =>
{
option.SwaggerEndpoint($"/swagger/v1/swagger.json","My Api v1");
option.OAuthClientId("myclientid");
option.OAuth2RedirectUrl("http://localhost:5000/swagger/oauth2-redirect.html");
});
运行应用程序后,将获得一个带有授权按钮的醒目的UI页面。单击它时,我看到以下可用的替代方法:
我选择了范围,然后将我重定向到linkedin登录页面。成功使用授权代码重定向回时,我得到:
身份验证错误错误:未找到
看着我看到的控制台
swagger-ui-bundle.js:71 POST http:// localhost:5000 / swagger / index.html 404(未找到)
它正在尝试对http:// localhost:5000 / swagger / index.html进行POST调用,但未找到404。
但是,看着这个电话,我确实看到授权代码是从LinkedIn返回的。
为什么这个呼叫一直失败?我试图完全删除option.Oauth2RedirectUrl和我得到相同的结果。我也尝试过将重定向URL设置为http:// localhost:5000 / swagger / index.html,但是,当我被重定向回时,它只是打开一个新标签并且没有代码。
关于如何解决此问题的任何建议?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。