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:
this.authentications = {
'Bearer': {type: 'apiKey', 'in': 'header', name: 'Authorization'}
};
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:
this.rootGet = function(callback) { ... }
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:
swagger: '2.0'
info:
version: 1.0.0
title: Based on "Basic Auth Example"
description: >
An example for how to use Auth with Swagger.
host: localhost
schemes:
- http
- https
paths:
/:
get:
parameters:
-
name: authorization
in: header
type: string
required: true
responses:
'200':
description: 'Will send `Authenticated`'
'403':
description: 'You do not have necessary permissions for the resource'
Esto generará un cliente con un nuevo parámetro en la firma del método:
this.rootGet = function(authorization, callback) {
// ...
var headerParams = {
'authorization': authorization
};
// ...
}
Para usar este método de la manera correcta, simplemente pase la "cadena completa"
// 'token' and 'cb' comes from elsewhere
var header = 'Bearer ' + token;
sdk.rootGet(header, cb);
Y funciona.