Ich versuche zu vermitteln, dass für das Authentifizierungs- / Sicherheitsschema ein Header wie folgt festgelegt werden muss:
Authorization: Bearer <token>
Dies ist, was ich basierend auf der Prahler-Dokumentation habe :
securityDefinitions:
APIKey:
type: apiKey
name: Authorization
in: header
security:
- APIKey: []
swagger
swagger-2.0
swagger-editor
Elmer Thomas
quelle
quelle
curl -X GET -H "Authorization: Bearer your_token"
, woyour_token
ist dein Inhaber Token. ZBcurl -X GET -H "Accept: application/json" -H "Authorization: Bearer 00000000-0000-0000-0000-000000000000" "http://localhost/secure-endpoint"
-H "Authorization: foo"
anstatt-H "Authorization: Bearer foo"
wie bei der OpenAPI 3-AntwortTrägerauthentifizierung in OpenAPI 3.0.0
OpenAPI 3.0 unterstützt jetzt die Bearer / JWT-Authentifizierung nativ. Es ist so definiert:
Dies wird in Swagger UI 3.4.0+ und Swagger Editor 3.1.12+ unterstützt (wiederum nur für OpenAPI 3.0-Spezifikationen!).
Auf der Benutzeroberfläche wird die Schaltfläche "Autorisieren" angezeigt, auf die Sie klicken und das Inhaber-Token eingeben können (nur das Token selbst ohne das Präfix "Träger"). Danach werden "Try it out" -Anfragen mit dem
Authorization: Bearer xxxxxx
Header gesendet .Authorization
Programmgesteuertes Hinzufügen von Headern (Swagger UI 3.x)Wenn Sie die Swagger-Benutzeroberfläche verwenden und aus irgendeinem Grund den
Authorization
Header programmgesteuert hinzufügen müssen, anstatt dass die Benutzer auf "Autorisieren" klicken und das Token eingeben, können Sie das verwendenrequestInterceptor
. Diese Lösung ist für Swagger UI 3.x ; UI 2.x verwendete eine andere Technik.quelle
Warum "Akzeptierte Antwort" funktioniert ... aber es hat mir nicht gereicht
Dies funktioniert in der Spezifikation. Zumindest
swagger-tools
(Version 0.10.1) validiert es als gültig.Wenn Sie jedoch andere Tools wie
swagger-codegen
(Version 2.1.6) verwenden, treten einige Schwierigkeiten auf, selbst wenn der generierte Client die folgende Authentifizierungsdefinition enthält:Es gibt keine Möglichkeit, das Token an den Header zu übergeben, bevor die Methode (Endpunkt) aufgerufen wird. Schauen Sie sich diese Funktionssignatur an:
Dies bedeutet, dass ich den Rückruf (in anderen Fällen Abfrageparameter usw.) nur ohne Token weitergebe, was zu einem falschen Build der Anforderung an den Server führt.
Meine Alternative
Leider ist es nicht "hübsch", aber es funktioniert, bis ich Unterstützung für JWT-Tokens auf Swagger bekomme.
Hinweis: Dies wird in diskutiert
Die Authentifizierung wird also wie ein Standardheader behandelt.
path
Fügen Sie am Objekt einen Header-Parameter hinzu:Dadurch wird ein Client mit einem neuen Parameter für die Methodensignatur generiert:
Um diese Methode richtig anzuwenden, übergeben Sie einfach die "vollständige Zeichenfolge".
Und funktioniert.
quelle
Antwort 2020 in JSON mit openapi 3.0.0 veröffentlichen:
quelle
Mein Hackie-Weg, um dies zu lösen, bestand darin, die Datei swagger.go im Paket echo-swagger in meinem Fall zu ändern:
Aktualisieren Sie am Ende der Datei die Funktion window.onload, um einen requestInterceptor einzuschließen, der das Token korrekt formatiert.
}}
quelle