Próbuję przekazać, że schemat uwierzytelniania / bezpieczeństwa wymaga ustawienia nagłówka w następujący sposób:
Authorization: Bearer <token>
Oto, co mam na podstawie dokumentacji swagger :
securityDefinitions:
APIKey:
type: apiKey
name: Authorization
in: header
security:
- APIKey: []
swagger
swagger-2.0
swagger-editor
Elmer Thomas
źródło
źródło
curl -X GET -H "Authorization: Bearer your_token"
, gdzieyour_token
jest twój token okaziciela. Np.curl -X GET -H "Accept: application/json" -H "Authorization: Bearer 00000000-0000-0000-0000-000000000000" "http://localhost/secure-endpoint"
-H "Authorization: foo"
zamiast-H "Authorization: Bearer foo"
odpowiedzi OpenAPI 3Uwierzytelnianie okaziciela w OpenAPI 3.0.0
OpenAPI 3.0 obsługuje teraz natywnie uwierzytelnianie Bearer / JWT. Jest zdefiniowany w ten sposób:
Jest to obsługiwane w Swagger UI 3.4.0+ i Swagger Editor 3.1.12+ (ponownie, tylko dla specyfikacji OpenAPI 3.0!).
Interfejs użytkownika wyświetli przycisk „Autoryzuj”, który można kliknąć i wprowadzić token okaziciela (sam token, bez prefiksu „Okaziciela”). Następnie żądania „wypróbuj” będą wysyłane z rozszerzeniem
Authorization: Bearer xxxxxx
nagłówkiem.Authorization
Programowe dodawanie nagłówka (Swagger UI 3.x)Jeśli korzystasz z interfejsu użytkownika Swaggera i z jakiegoś powodu potrzebujesz
Authorization
programowo dodać nagłówek, zamiast zmuszać użytkowników do klikania „Autoryzuj” i wprowadzania tokenu, możesz użyć rozszerzeniarequestInterceptor
. To rozwiązanie jest przeznaczone dla interfejsu Swagger UI 3.x ; W interfejsie użytkownika 2.x zastosowano inną technikę.źródło
Dlaczego „Accepted Answer” działa… ale to mi nie wystarczało
Działa to w specyfikacji. Przynajmniej
swagger-tools
(wersja 0.10.1) sprawdza, czy jest on prawidłowy.Ale jeśli używasz innych narzędzi, takich jak
swagger-codegen
(wersja 2.1.6), napotkasz pewne trudności, nawet jeśli wygenerowany klient zawiera definicję uwierzytelniania, taką jak ta:Nie ma możliwości przekazania tokenu do nagłówka przed wywołaniem metody (punktu końcowego). Spójrz na ten podpis funkcji:
Oznacza to, że przekazuję tylko wywołanie zwrotne (w innych przypadkach parametry zapytania itp.) Bez tokena, co prowadzi do nieprawidłowej kompilacji żądania do serwera.
Moja alternatywa
Niestety nie jest „ładna”, ale działa, dopóki nie otrzymam wsparcia JWT Tokens na Swagger.
Uwaga: która jest omawiana w
Tak więc uwierzytelnianie uchwytu jest takie jak standardowy nagłówek. Do
path
obiektu dołącz parametr nagłówka:Spowoduje to wygenerowanie klienta z nowym parametrem w sygnaturze metody:
Aby użyć tej metody we właściwy sposób, po prostu podaj „pełny ciąg”
I działa.
źródło
Publikowanie odpowiedzi 2020 w formacie JSON przy użyciu openapi 3.0.0:
źródło
Mój sposób Hackie na rozwiązanie tego problemu polegał na zmodyfikowaniu pliku swagger.go w pakiecie echo-swagger w moim przypadku:
U dołu pliku zaktualizuj funkcję window.onload tak, aby zawierała requestInterceptor, który poprawnie formatuje token.
}
źródło