gpt4 book ai didi

c# - 如何在 Swagger-ui 进行的 oauth2/token 调用中发送 "audience"字段?

转载 作者:行者123 更新时间:2023-12-03 17:14:21 35 4
gpt4 key购买 nike

我正在使用 Swagger-UI 和 Swashbuckle v5.6 来记录 Auth0 (OAuth2) 安全的 .NET Web API。
我一直在尝试将 Swagger 配置为从 Auth0 服务获取 UI 中的 token 。到目前为止,我已经设法做到了,但问题是我需要在 POST/token 请求的正文中发送“受众”字段,我正在努力从 SwaggerConfig.cs 找出如何做到这一点。

到目前为止,我的 SwaggerConfig.cs 看起来像这样:

public class SwaggerConfig
{
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
string appName = "myApi";
var audience = System.Configuration.ConfigurationManager.AppSettings["AuthAudience"];
string tokenUrl = "somethingsomething/oauth/token";

GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "myApi");
c.IncludeXmlComments(string.Format(@"{0}\bin\myApi.XML", System.AppDomain.CurrentDomain.BaseDirectory));
c.DescribeAllEnumsAsStrings();

c.OAuth2("oauth2")
.Description("client credentials grant flow")
.Flow("password")
.TokenUrl(tokenUrl)
.Scopes(scopes =>
{
scopes.Add("myapi", "openid profile email address phone");
});

c.OperationFilter<AssignOperationFilters>();
c.DocumentFilter<SecurityRequirementsDocumentFilter>();
})
.EnableSwaggerUi(c =>
{
var clientId = System.Configuration.ConfigurationManager.AppSettings["Auth0ApiClientId"];
var clientSecret = System.Configuration.ConfigurationManager.AppSettings["Auth0ApiClientSecret"];

var additionalParams = new Dictionary<string, string>{ {"audience", audience } };

c.EnableOAuth2Support(clientId,
clientSecret,
appName,
"tmdq",
additionalQueryStringParams: additionalParams);

});
}
}

最佳答案

在从 6.0.0 版开始的 Swagger 中,您可以像这样使用请求拦截器:

 app.UseSwaggerUI(options =>
{
options.UseRequestInterceptor("(req) => { if (req.url.endsWith('oauth/token') && req.body) req.body += '&audience=" + appsettings.Audience + "'; return req; }");

});

关于c# - 如何在 Swagger-ui 进行的 oauth2/token 调用中发送 "audience"字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54254768/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com