Я использую Swagger-UI с Swashbuckle v5.6 для документирования защищенного веб-API .NET Auth0 (OAuth2).
Я пытался настроить Swagger для получения токена в пользовательском интерфейсе от службы Auth0. Пока что мне удалось это сделать, но проблема в том, что мне нужно отправить в теле запроса POST / токена поле «аудитория», и я изо всех сил пытаюсь выяснить, как это сделать из 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);
});
}
}