Я определяю (небольшими частями) существующий API ( Samanage ), используя OpenAPI для помощи в некоторой работе по интеграции.
Мне нужно пройти аутентификацию, используя аутентификацию Bearer, но отправив токен в заголовке, отличном от Authorize
.
Сервер ожидает аутентификацию на предъявителя в заголовке с именем X-Samanage-Authorization
, как в этом примере:
curl -H "X-Samanage-Authorization: Bearer <TokenGoesHere>" -H 'Accept: application/vnd.samanage.v2.1+json' -H 'Content-Type: application/json' -X GET https://api.samanage.com/incidents.json
Мне известно о https://swagger.io/docs/specification/authentication/bearer-authentication/,, но, похоже, это не помогает мне полностью.
This (OpenAPI 3)
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
...
security:
- bearerAuth: []
В результате получается заголовок аутентификации с именем по умолчанию (Authorization
)
curl -X GET "https://api.samanage.com/incidents/12341234.json" -H "accept: application/json" -H "Authorization: Bearer <TokenGoesHere>"
Что тогда не получается (401).
Я чувствую, что хочу этого:
components:
securitySchemes:
bearerAuth:
type: http
name: X-Samanage-Authorization
in: header
scheme: bearer
Но это не проходит проверку в редакторе Swagger, так как я считаю, что type
из http
не допускает компонент name
(как это делает тип apiKey
). Я не мог полностью понять документы здесь , если честно.
Я читал о Расширениях спецификаций , но, будучи совершенно новым для OpenAPI, я не смог найти примеров того, как на самом деле реализовать то, что мне нужно.
Любое понимание высоко ценится!