Swashbuckle.AspNetCore v1.0.0 with OAuth2,flow:application – > IdentityServer4

我似乎无法使我的.net核心Web API与swashbuckle,OAuth2一起使用应用程序流。 当我单击“授权”按钮时,Fiddler显示调用正常,我的本地IdentityServer(4)回复了access_token。 这一切都很棒,但我不认为Swagger选择了这一点,没有任何事情发生,我不能在没有获得401的情况下触发我的控制器方法。我看不到任何cookies,没有。 我敢肯定我错过了一些超级微不足道的东西。 有人可以帮我吗?

相关代码:

在Startup.cs中配置服务

c.AddSecurityDefinition("oauth2", new OAuth2Scheme { Type = "oauth2", Flow = "application", TokenUrl = "http://localhost:61798/connect/token", Scopes = new Dictionary { { "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)。

我们对当前项目的设置非常相似。 我们的restapi通过jwt承载认证和azure ad b2c保护。 在这种情况下,没有办法自动获取令牌。

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

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

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