Swashbuckle OAuth2用户授权使用客户端凭证流
问题描述:
我用Swashbuckle到的WebAPI控制器的文档。我还使用OAuth2和客户端凭证流程。所以授权我需要通过client_id
和client_secret
。Swashbuckle OAuth2用户授权使用客户端凭证流
我有下面的代码:
config.EnableSwagger(c => {
c.SingleApiVersion("v1", "My API");
c.OAuth2("oauth2")
.Flow("application")
.TokenUrl("/oauth2/token");
c.OperationFilter<AssignOAuthSecurityRequirements>();
})
.EnableSwaggerUi(c => {
c.EnableOAuth2Support(clientId: "clientIdValue", clientSecret:"clientSecretValue", "", "");
c.CustomAsset("index", Assembly.GetExecutingAssembly(), "WebAPI.Swagger.UI.index.html");
});
授权工作正常,但我client_id
和client_secret
值是硬编码(clientIdValue,clientSecretValue)。如何增加用户在此对话框中输入该值的可能性?谁能帮我?
请让我知道如果我需要张贴的AssignOAuthSecurityRequirements
代码了。感谢所有提前
答
不知道到底出了什么错在你的代码,也许缺少的范围定义。
我和ASP.NET的核心和当前版本Swashbuckle.AspNetCore的(https://github.com/domaindrivendev/Swashbuckle.AspNetCore)成功地做到了
凭证流被称为“应用程序”的客户端,这样,在你Startup.cs文件,您需要配置扬鞭如下:
services.AddSwaggerGen(c => {
//other configs...
c.AddSecurityDefinition("oauth2", new OAuth2Scheme {
Type = "oauth2",
Flow = "application",
TokenUrl = "<token_endpoint_url>",
Scopes = new Dictionary<string, string>
{
{ "first-scope", "First scope description" },
{ "second-scope", "Second scope description" }
//define as many scopes as you want...
}
});
});
的TokenUrl参数必须指向一个有效的OAuth 2.0兼容令牌端点(结账http://docs.identityserver.io/en/release/endpoints/token.html用于终端该如何做/看起来像一个样品)。我的测试中都使用了绝对网址和相对网址。
之后,授权对话框应该像波纹管:
- 请注意,您必须至少选择一个范围内授权按钮实际上提交任何东西(的OAuth的应该组件之前,被改为添加免责声明恕我直言)。
任何其他配置被要求在SwaggerUI部分。
你解决这个吗?我正在寻找相同问题的解决方案。 – jks
同上,我也很好奇我怎样才能获得一个消费者可以输入他们的client_id和client_secret进行验证的对话框。这是可能的大招吗? – Zoop