首页 > 解决方案 > OpenID 的 Swashbuckle 问题

问题描述

我在 ASP.NET Core 上配置了 Swashbuckle (5.0.0-rc2) 以与我的 OpenID 服务器 (Openiddict) 一起使用,但 Swagger 没有显示任何可用的授权。只有一个空的模态。

这是我在 swagger 上设置 OpenID 的片段

services.AddSwaggerGen(c =>
{
    //... omitted for brevity
    //baseAccountsUrl is "https://localhost:5401"

    c.AddSecurityDefinition("AccountsOpenID", new OpenApiSecurityScheme
    {
        Type = SecuritySchemeType.OpenIdConnect,
        OpenIdConnectUrl = new Uri($"{baseAccountsUrl}/.well-known/openid-configuration")
    });
}

如果我在到达这里之前登录,则每个操作都可以正常工作,否则每个方法都将被重定向到登录并显示在服务器响应中。

如果我使用 OAuth2 而不是 OpenID 和密码流(在 Openiddict 上以这种方式配置)并且没有在浏览器中登录,它也不成功。

我究竟做错了什么?

标签: c#.netasp.net-coreopenid-connectswashbuckle

解决方案


Swagger UI v. 3.38.0 中添加了对 OpenID Connect Discovery 的支持。Swashbuckle 需要将捆绑的 Swagger UI 更新到最新版本:
https ://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1241


推荐阅读