Estou tentando transmitir que o esquema de autenticação / segurança requer a configuração de um cabeçalho da seguinte maneira:
Authorization: Bearer <token>
Isso é o que eu tenho com base na documentação do swagger :
securityDefinitions:
APIKey:
type: apiKey
name: Authorization
in: header
security:
- APIKey: []
swagger
swagger-2.0
swagger-editor
Elmer Thomas
fonte
fonte
curl -X GET -H "Authorization: Bearer your_token"
, ondeyour_token
está seu token de portador. Excurl -X GET -H "Accept: application/json" -H "Authorization: Bearer 00000000-0000-0000-0000-000000000000" "http://localhost/secure-endpoint"
-H "Authorization: foo"
vez de-H "Authorization: Bearer foo"
como a resposta OpenAPI 3Autenticação do portador em OpenAPI 3.0.0
OpenAPI 3.0 agora suporta autenticação Bearer / JWT nativamente. É definido assim:
Isso é compatível com Swagger UI 3.4.0+ e Swagger Editor 3.1.12+ (novamente, apenas para especificações OpenAPI 3.0!).
A IU exibirá o botão "Autorizar", no qual você pode clicar e inserir o token do portador (apenas o próprio token, sem o prefixo "Portador"). Depois disso, as solicitações de "teste" serão enviadas com o
Authorization: Bearer xxxxxx
cabeçalho.Adicionando
Authorization
cabeçalho de forma programática (Swagger UI 3.x)Se você usar a IU Swagger e, por algum motivo, precisar adicionar o
Authorization
cabeçalho programaticamente em vez de fazer os usuários clicarem em "Autorizar" e inserir o token, você pode usar orequestInterceptor
. Esta solução é para Swagger UI 3.x ; UI 2.x usava uma técnica diferente.fonte
Por que "Resposta aceita" funciona ... mas não foi o suficiente para mim
Isso funciona na especificação. Pelo menos
swagger-tools
(versão 0.10.1) o valida como válido.Mas se você estiver usando outras ferramentas como
swagger-codegen
(versão 2.1.6) encontrará algumas dificuldades, mesmo que o cliente gerado contenha a definição de Autenticação, como esta:Não há como passar o token para o cabeçalho antes que o método (ponto de extremidade) seja chamado. Olhe para esta assinatura de função:
Isso significa que eu apenas passo o retorno de chamada (em outros casos, parâmetros de consulta, etc.) sem um token, o que leva a uma construção incorreta da solicitação para o servidor.
Minha alternativa
Infelizmente, não é "bonito", mas funciona até que eu obtenha suporte para tokens JWT no Swagger.
Nota: que está sendo discutido em
Portanto, ele trata a autenticação como um cabeçalho padrão. No
path
objeto, anexe um parâmetro de cabeçalho:Isso irá gerar um cliente com um novo parâmetro na assinatura do método:
Para usar este método da maneira certa, basta passar a "string completa"
E funciona.
fonte
Postando a resposta de 2020 em JSON usando openapi 3.0.0:
fonte
Minha maneira Hackie de resolver isso foi modificando o arquivo swagger.go no pacote echo-swagger no meu caso:
Na parte inferior do arquivo, atualize a função window.onload para incluir um requestInterceptor que formata corretamente o token.
}
fonte