Когда я добавляю схему безопасности как JWT в свое определение OpenAPI, функция «Попробовать» в пользовательском интерфейсе всегда возвращает 401: Несанкционированная ошибка

У меня есть следующее базовое определение openAPI:

openapi: "3.0.0"

info:
  description: >-
    API which tests service
  version: "1.0"
  title: Test Service

servers:
  - url: /
    description: Localhost Server

security:
  - bearerAuth: []

paths:
  /test:
    get:
      operationId: app.test
      responses:
        200:
          description: Test
          content:
            text/plain:
              schema:
                type: string

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

Пользовательский интерфейс Swagger показывает параметр «Авторизовать», где я помещаю токен JWT без ключевого слова «предъявитель» и нажимаю «Попробовать». Ответ такой:

{
  "detail": "No authorization token provided",
  "status": 401,
  "title": "Unauthorized",
  "type": "about:blank"
}

Команда curl имеет правильный заголовок авторизации, который также не работает, если я выполняю ее в терминале.

Однако, если я удалю тег security из определения OpenAPI, команда «Попробовать», а также команда curl будут работать.

Кто-нибудь знает, в чем может быть проблема? Какая правильная команда curl при использовании схемы безопасности JWT в OpenAPI?


person Ajay Maity    schedule 20.06.2019    source источник


Ответы (1)


Я использую аутентификацию JWT в своем приложении, и это мой curl, который работает. Я пытаюсь понять, как заставить OpenApi генерировать правильные заголовки.

curl "${URL}/${ID}/${RESOURCE}" \
    -H "Accept: application/json" \
    -H "X-Requested-With: XMLHttpRequest" \
    -H "Authorization: Bearer ${BEARER_TOKEN}" \
    -H "Content-Type: application/json" | python -m json.tool
person bruce szalwinski    schedule 25.03.2020