【问题标题】:Swashbuckle.AspNetCore v1.0.0 with OAuth2, flow : application -> IdentityServer4带有 OAuth2 的 Swashbuckle.AspNetCore v1.0.0,流程:应用程序 -> IdentityServer4
【发布时间】:2017-09-28 23:12:45
【问题描述】:

我似乎无法让我的 .net 核心 Web API 与 swashbuckle、OAuth2 和应用程序流一起使用。当我单击 Authorize 按钮时,Fiddler 显示调用正常,并且我的本地 IdentityServer(4) 以 access_token 回复。这一切都很好,但我不认为 Swagger 能解决这个问题,没有任何事情发生,我无法在没有 401 的情况下触发我的控制器方法。我看不到任何 cookie,什么也没有。我确定我错过了一些非常微不足道的东西。有人可以帮我吗?

相关代码:

Startup.cs 中的配置服务

c.AddSecurityDefinition("oauth2", new OAuth2Scheme
{                    
    Type = "oauth2",
    Flow = "application",                      
    TokenUrl = "http://localhost:61798/connect/token",
    Scopes = new Dictionary<string, string>
    {
        { "readAccess", "Access read operations" },
        { "writeAccess", "Access write operations" }
    }
});

在 Startup.cs 中配置

app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
    Authority = "http://localhost:61798",
    RequireHttpsMetadata = false,
    ApiName = "api1",
    AutomaticAuthenticate = true, //Doesn't change anything...
});

....

app.UseSwagger();
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Docs");
    c.ConfigureOAuth2("Swagger", "swaggersecret", "swaggerrealm", "Swagger UI");                
});

我的 IdentityServer 配置正常。我可以毫无问题地在 Postman 和一个简单的客户端中调用这个 API。我唯一的问题是 Swagger (Swashbuckle.AspNetCore 1.0.0)。

【问题讨论】:

  • 使用 Postman 测试 API 时是否传递了 access_token?如果是,如何?我会在此基础上给出解决方案。
  • 我愿意,我在标头中传递了令牌(键:授权,值:承载 {token})。

标签: c# .net-core identityserver4 swashbuckle


【解决方案1】:

对于当前项目,我们有一个非常相似的设置。我们的 rest api 使用 jwt 不记名身份验证和 azure ad b2c 保护。在这种情况下,没有办法大摇大摆地自动拿起令牌。

这个解决方案非常适合我们:https://stackoverflow.com/a/39759152/536196

services.AddSwaggerGen(c =>
{
    c.OperationFilter<AuthorizationHeaderParameterOperationFilter>();
});

之后,当您运行 Swagger UI 时,您应该会看到令牌的附加字段。

【讨论】:

  • 我是怎么发现的,没有办法招摇自动接,我见过一些应用程序有Authorize按钮,也是这样
猜你喜欢
  • 2019-08-17
  • 2017-06-26
  • 2021-07-18
  • 2018-01-08
  • 1970-01-01
  • 2015-12-05
  • 2017-12-31
  • 1970-01-01
  • 2021-11-28
相关资源
最近更新 更多