首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有OAuth2的Swashbuckle.AspNetCore v1.0.0,流程: application -> IdentityServer4

带有OAuth2的Swashbuckle.AspNetCore v1.0.0,流程: application -> IdentityServer4
EN

Stack Overflow用户
提问于 2017-05-01 22:29:19
回答 1查看 2.5K关注 0票数 2

我似乎不能让我的.net核心web API与swashbuckle、OAuth2和应用程序流一起工作。当我单击Authorize按钮时,Fiddler显示调用是OK的,并且我的本地IdentityServer(4)使用access_token进行响应。这一切都很棒,但我不认为Swagger会发现这一点,什么都没有发生,如果没有得到401,我就不能触发我的控制器方法。我没有看到饼干,什么都没有。我肯定我漏掉了一些非常微不足道的东西。有人能帮帮我吗?

相关代码:

Startup.cs中的ConfigureServices

代码语言:javascript
复制
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中配置

代码语言:javascript
复制
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)。

EN

回答 1

Stack Overflow用户

发布于 2017-05-02 17:14:54

我们对当前项目有一个非常相似的设置。我们的rest api使用jwt承载身份验证和azure ad b2c进行保护。在这种情况下,swagger无法自动拾取令牌。

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

代码语言:javascript
复制
services.AddSwaggerGen(c =>
{
    c.OperationFilter<AuthorizationHeaderParameterOperationFilter>();
});

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43720776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档