Настройка Swagger (ASP.NET Core) с использованием заголовков авторизации (Bearer)

У меня есть веб-API (ядро ASP.NET), и я пытаюсь настроить чванство, чтобы совершать вызовы от него. Вызовы должны содержать заголовок авторизации, и я использую аутентификацию на предъявителя. Звонки с сторонних приложений, таких как почтальон и т.д., Идут хорошо. Но у меня возникла проблема с настройкой заголовков для чванства (по какой-то причине я не получаю заголовки). Вот как это выглядит сейчас:

  "host": "localhost:50352",
  "basePath": "/" ,
  "schemes": [
    "http",
    "https"
  ],
 "securityDefinitions":  {
    "Bearer": {
      "name": "Authorization",
      "in": "header",
      "type": "apiKey",
      "description": "HTTP/HTTPS Bearer"
    }
  },
  "paths": { 
    "/v1/{subAccountId}/test1": {
      "post": {
        "tags": [
          "auth"
        ],
        "operationId": "op1",
        "consumes": ["application/json", "application/html"],
        "produces": ["application/json", "application/html"],
        "parameters": [
          {
            "name": "subAccountId",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "security":[{
          "Bearer": []
        }],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "BadRequest",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "500": {
            "description": "InternalServerError",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "deprecated": false
      }
    },

Ответ 1

Прежде всего, вы можете использовать пакет Swashbuckle.AspNetCore nuget для автоматической генерации вашего определения чванства. (проверено на 2.3.0)

После установки пакета настройте его в Startup.cs в методе ConfigureServices.

services.AddSwaggerGen(c => {
    c.SwaggerDoc("v1", new Info { Title = "You api title", Version = "v1" });
    c.AddSecurityDefinition("Bearer",
        new ApiKeyScheme { In = "header",
          Description = "Please enter into field the word 'Bearer' following by space and JWT", 
          Name = "Authorization", Type = "apiKey" });
    c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>> {
        { "Bearer", Enumerable.Empty<string>() },
    });

});

Затем вы можете использовать кнопку авторизации в правом верхнем углу страницы.

По крайней мере, вы можете попробовать использовать этот пакет для генерации правильного определения чванства

Ответ 2

В настоящее время Swagger имеет функциональность для аутентификации с помощью JWT-токена и может автоматически добавлять токен в заголовок, я ответил здесь.