Я нашел решение сам. Я хотел бы поделиться этим в случае, если кто-то сталкивается с той же проблемой. Решение состоит из двух этапов: первый - запрос токена, а следующий шаг - добавление токена в запрос заголовка.
Итак, первый шаг:
Настройте внешний интерфейс для включения пост-запроса на запрос токена:
Добавьте класс AuthTokenOperation
, чтобы включить который наследует интерфейс IDcoumentFilter
и реализует метод Apply:
public class AuthTokenOperation : IDocumentFilter
{
/// <summary>
/// Apply custom operation.
/// </summary>
/// <param name="swaggerDoc">The swagger document.</param>
/// <param name="schemaRegistry">The schema registry.</param>
/// <param name="apiExplorer">The api explorer.</param>
public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
{
swaggerDoc.paths.Add("/token", new PathItem
{
post = new Operation
{
tags = new List<string> { "Auth"},
consumes = new List<string>
{
"application/x-www-form-urlencoded"
},
parameters = new List<Parameter>
{
new Parameter
{
type = "string",
name = "grant_type",
required = true,
@in = "formData"
},
new Parameter
{
type = "string",
name = "username",
required = false,
@in = "formData"
},
new Parameter
{
type = "string",
name = "password",
required = false,
@in = "formData"
},
}
}
});
}
}
А в классе SwaggerConfig в методе register добавьте это действие
c.DocumentFilter<AuthTokenOperation>();
к методу расширения:
GlobalConfiguration.Configuration.EnableSwagger
Чтобы добавить токен авторизации в заголовок запроса:
Добавить этот класс операций:
/// <summary>
/// The class to add the authorization header.
/// </summary>
public class AddAuthorizationHeaderParameterOperationFilter : IOperationFilter
{
/// <summary>
/// Applies the operation filter.
/// </summary>
/// <param name="operation"></param>
/// <param name="schemaRegistry"></param>
/// <param name="apiDescription"></param>
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation.parameters != null)
{
operation.parameters.Add(new Parameter
{
name = "Authorization",
@in = "header",
description = "access token",
required = false,
type = "string"
});
}
}
}
А в классе SwaggerConfig в методе register добавьте это действие
c.OperationFilter<AddAuthorizationHeaderParameterOperationFilter>();
к методу расширения:
GlobalConfiguration.Configuration.EnableSwagger
Конечно, в поле Authoization вам нужно добавить:
Носитель токен_строка