Я пытаюсь передать, что схема аутентификации / безопасности требует установки следующего заголовка:
Authorization: Bearer <token>
Это то, что я основал на документации по чванству :
securityDefinitions:
APIKey:
type: apiKey
name: Authorization
in: header
security:
- APIKey: []
swagger
swagger-2.0
swagger-editor
Элмер Томас
источник
источник
curl -X GET -H "Authorization: Bearer your_token"
, гдеyour_token
ваш жетон на предъявителя. Напримерcurl -X GET -H "Accept: application/json" -H "Authorization: Bearer 00000000-0000-0000-0000-000000000000" "http://localhost/secure-endpoint"
-H "Authorization: foo"
а не-H "Authorization: Bearer foo"
как ответ OpenAPI 3Аутентификация носителя в OpenAPI 3.0.0
OpenAPI 3.0 теперь изначально поддерживает аутентификацию Bearer / JWT. Это определяется так:
Это поддерживается в Swagger UI 3.4.0+ и Swagger Editor 3.1.12+ (опять же, только для спецификаций OpenAPI 3.0!).
Пользовательский интерфейс отобразит кнопку «Авторизовать», которую вы можете нажать и ввести токен на предъявителя (только сам токен без префикса «На предъявителя»). После этого будут отправляться запросы «опробовать» с
Authorization: Bearer xxxxxx
заголовком.Добавление
Authorization
заголовка программным способом (Swagger UI 3.x)Если вы используете пользовательский интерфейс Swagger и по какой-то причине вам нужно добавить
Authorization
заголовок программно вместо того, чтобы пользователи нажимали «Авторизовать» и вводили токен, вы можете использоватьrequestInterceptor
. Это решение для Swagger UI 3.x ; UI 2.x использовал другую технику.источник
Почему "Принятый ответ" работает ... но мне этого было недостаточно
Это работает в спецификации. По крайней мере
swagger-tools
(версия 0.10.1) подтверждает его как действительный.Но если вы используете другие инструменты, такие как
swagger-codegen
(версия 2.1.6), вы столкнетесь с некоторыми трудностями, даже если сгенерированный клиент содержит определение аутентификации, например:Невозможно передать токен в заголовок до вызова метода (конечной точки). Посмотрите на эту сигнатуру функции:
Это означает, что я передаю только обратный вызов (в других случаях параметры запроса и т.д.) без токена, что приводит к неправильной сборке запроса к серверу.
Моя альтернатива
К сожалению, это не "красиво", но работает, пока я не получу поддержку токенов JWT на Swagger.
Примечание: который обсуждается в
Итак, он обрабатывает аутентификацию как стандартный заголовок. К
path
объекту добавьте параметр заголовка:Это сгенерирует клиента с новым параметром в сигнатуре метода:
Чтобы правильно использовать этот метод, просто передайте "полную строку"
И работает.
источник
Отправка ответа 2020 года в JSON с использованием openapi 3.0.0:
источник
Мой Hackie способ решить эту проблему заключался в изменении файла swagger.go в пакете echo-swagger в моем случае:
В нижней части файла обновите функцию window.onload, чтобы включить requestInterceptor, который правильно форматирует токен.
}
источник