Estoy tratando de transmitir que el esquema de autenticación / seguridad requiere configurar un encabezado de la siguiente manera:
Authorization: Bearer <token>
Esto es lo que tengo basado en la documentación de swagger :
securityDefinitions:
APIKey:
type: apiKey
name: Authorization
in: header
security:
- APIKey: []
swagger
swagger-2.0
swagger-editor
Elmer Thomas
fuente
fuente
curl -X GET -H "Authorization: Bearer your_token"
, dóndeyour_token
está su token de portador. Por ejemplocurl -X GET -H "Accept: application/json" -H "Authorization: Bearer 00000000-0000-0000-0000-000000000000" "http://localhost/secure-endpoint"
-H "Authorization: foo"
lugar de-H "Authorization: Bearer foo"
como la respuesta de OpenAPI 3Autenticación de portador en OpenAPI 3.0.0
OpenAPI 3.0 ahora admite la autenticación Bearer / JWT de forma nativa. Se define así:
Esto es compatible con Swagger UI 3.4.0+ y Swagger Editor 3.1.12+ (nuevamente, ¡solo para especificaciones de OpenAPI 3.0!).
La interfaz de usuario mostrará el botón "Autorizar", en el que puede hacer clic e ingresar el token de portador (solo el token en sí, sin el prefijo "Bearer"). Después de eso, las solicitudes de "pruébalo" se enviarán con el
Authorization: Bearer xxxxxx
encabezado.Agregar
Authorization
encabezado mediante programación (Swagger UI 3.x)Si usa la interfaz de usuario de Swagger y, por alguna razón, necesita agregar el
Authorization
encabezado mediante programación en lugar de que los usuarios hagan clic en "Autorizar" e ingresen el token, puede usar elrequestInterceptor
. Esta solución es para Swagger UI 3.x ; UI 2.x utilizó una técnica diferente.fuente
Por qué funciona "Respuesta aceptada" ... pero no fue suficiente para mí
Esto funciona en la especificación. Al menos
swagger-tools
(versión 0.10.1) lo valida como válido.Pero si está utilizando otras herramientas como
swagger-codegen
(versión 2.1.6) encontrará algunas dificultades, incluso si el cliente generado contiene la definición de Autenticación, como esta:No hay forma de pasar el token al encabezado antes de que se llame al método (punto final). Mire en esta firma de función:
Esto significa que solo paso la devolución de llamada (en otros casos, parámetros de consulta, etc.) sin un token, lo que conduce a una compilación incorrecta de la solicitud al servidor.
Mi alternativa
Desafortunadamente, no es "bonito", pero funciona hasta que obtengo el soporte de JWT Tokens en Swagger.
Nota: que se está discutiendo en
Entonces, maneja la autenticación como un encabezado estándar. En el
path
objeto, agregue un parámetro de encabezado:Esto generará un cliente con un nuevo parámetro en la firma del método:
Para usar este método de la manera correcta, simplemente pase la "cadena completa"
Y funciona.
fuente
Publicando la respuesta 2020 en JSON usando openapi 3.0.0:
fuente
Mi forma de Hackie para resolver esto fue modificando el archivo swagger.go en el paquete echo-swagger en mi caso:
En la parte inferior del archivo, actualice la función window.onload para incluir un requestInterceptor que formatea correctamente el token.
}
fuente