J'essaie de transmettre que le schéma d'authentification / sécurité nécessite de définir un en-tête comme suit:
Authorization: Bearer <token>
Voici ce que j'ai basé sur la documentation swagger :
securityDefinitions:
APIKey:
type: apiKey
name: Authorization
in: header
security:
- APIKey: []
swagger
swagger-2.0
swagger-editor
Elmer Thomas
la source
la source
curl -X GET -H "Authorization: Bearer your_token"
, oùyour_token
est votre jeton porteur. Par exemplecurl -X GET -H "Accept: application/json" -H "Authorization: Bearer 00000000-0000-0000-0000-000000000000" "http://localhost/secure-endpoint"
-H "Authorization: foo"
au lieu de-H "Authorization: Bearer foo"
comme la réponse OpenAPI 3Authentification du support dans OpenAPI 3.0.0
OpenAPI 3.0 prend désormais en charge l'authentification Bearer / JWT de manière native. Il est défini comme ceci:
Ceci est pris en charge dans Swagger UI 3.4.0+ et Swagger Editor 3.1.12+ (encore une fois, pour les spécifications OpenAPI 3.0 uniquement!).
L'interface utilisateur affichera le bouton «Autoriser», sur lequel vous pouvez cliquer et saisir le jeton porteur (juste le jeton lui-même, sans le préfixe «porteur»). Après cela, les demandes «essayez-le» seront envoyées avec l'en-
Authorization: Bearer xxxxxx
tête.Ajout d'en-
Authorization
tête par programme (Swagger UI 3.x)Si vous utilisez l'interface utilisateur Swagger et que, pour une raison quelconque, vous devez ajouter l'en-
Authorization
tête par programme au lieu de demander aux utilisateurs de cliquer sur "Autoriser" et de saisir le jeton, vous pouvez utiliser lerequestInterceptor
. Cette solution est pour Swagger UI 3.x ; UI 2.x a utilisé une technique différente.la source
Pourquoi "Réponse acceptée" fonctionne ... mais ce n'était pas suffisant pour moi
Cela fonctionne dans la spécification. Au moins
swagger-tools
(version 0.10.1) le valide comme un fichier valide.Mais si vous utilisez d'autres outils comme
swagger-codegen
(version 2.1.6), vous rencontrerez des difficultés, même si le client généré contient la définition d'authentification, comme ceci:Il n'y a aucun moyen de passer le jeton dans l'en-tête avant que la méthode (point de terminaison) ne soit appelée. Regardez dans cette signature de fonction:
Cela signifie que je transmets uniquement le rappel (dans d'autres cas, les paramètres de requête, etc.) sans jeton, ce qui conduit à une construction incorrecte de la demande au serveur.
Mon alternative
Malheureusement, ce n'est pas "joli" mais cela fonctionne jusqu'à ce que j'obtienne le support des jetons JWT sur Swagger.
Remarque: ce qui est discuté dans
Donc, il gère l'authentification comme un en-tête standard. Sur l'
path
objet, ajoutez un paramètre d'en-tête:Cela générera un client avec un nouveau paramètre sur la signature de la méthode:
Pour utiliser cette méthode de la bonne manière, il suffit de passer la "chaîne complète"
Et fonctionne.
la source
Publication de la réponse 2020 dans JSON en utilisant openapi 3.0.0:
la source
Ma façon Hackie de résoudre ce problème était de modifier le fichier swagger.go dans le package echo-swagger dans mon cas:
Au bas du fichier, mettez à jour la fonction window.onload pour inclure un requestInterceptor qui formate correctement le jeton.
}
la source