Saya mencoba menyampaikan bahwa skema otentikasi / keamanan memerlukan pengaturan tajuk sebagai berikut:
Authorization: Bearer <token>
Inilah yang saya miliki berdasarkan dokumentasi kesombongan :
securityDefinitions:
APIKey:
type: apiKey
name: Authorization
in: header
security:
- APIKey: []
swagger
swagger-2.0
swagger-editor
Elmer Thomas
sumber
sumber
curl -X GET -H "Authorization: Bearer your_token"
, di manayour_token
token pembawa Anda. Misalnyacurl -X GET -H "Accept: application/json" -H "Authorization: Bearer 00000000-0000-0000-0000-000000000000" "http://localhost/secure-endpoint"
-H "Authorization: foo"
alih - alih-H "Authorization: Bearer foo"
menyukai jawaban OpenAPI 3Otentikasi pembawa di OpenAPI 3.0.0
OpenAPI 3.0 sekarang mendukung otentikasi Bearer / JWT secara asli. Ini didefinisikan seperti ini:
Ini didukung di Swagger UI 3.4.0+ dan Swagger Editor 3.1.12+ (sekali lagi, hanya untuk spesifikasi OpenAPI 3.0!).
UI akan menampilkan tombol "Otorisasi", yang dapat Anda klik dan masukkan token pembawa (cukup token itu sendiri, tanpa awalan "Pembawa"). Setelah itu, permintaan "try it out" akan dikirim dengan
Authorization: Bearer xxxxxx
header.Menambahkan
Authorization
header secara terprogram (Swagger UI 3.x)Jika Anda menggunakan Swagger UI dan, karena alasan tertentu, perlu menambahkan
Authorization
header secara terprogram daripada meminta pengguna mengklik "Otorisasi" dan memasukkan token, Anda dapat menggunakanrequestInterceptor
. Solusi ini untuk Swagger UI 3.x ; UI 2.x menggunakan teknik yang berbeda.sumber
Mengapa "Jawaban yang Diterima" berhasil ... tetapi itu tidak cukup bagi saya
Ini bekerja sesuai spesifikasi. Setidaknya
swagger-tools
(versi 0.10.1) memvalidasinya sebagai valid.Tetapi jika Anda menggunakan alat lain seperti
swagger-codegen
(versi 2.1.6) Anda akan menemukan beberapa kesulitan, meskipun klien yang dibuat berisi definisi Otentikasi, seperti ini:Tidak ada cara untuk meneruskan token ke header sebelum metode (titik akhir) dipanggil. Perhatikan tanda tangan fungsi ini:
Ini berarti bahwa, saya hanya meneruskan callback (dalam kasus lain parameter kueri, dll) tanpa token, yang mengarah ke pembuatan permintaan yang salah ke server.
Alternatif saya
Sayangnya, ini tidak "cantik" tetapi berfungsi sampai saya mendapatkan dukungan Token JWT di Swagger.
Catatan: yang sedang dibahas di
Jadi, ini menangani otentikasi seperti header standar. Pada
path
objek menambahkan paremeter header:Ini akan menghasilkan klien dengan parameter baru pada tanda tangan metode:
Untuk menggunakan metode ini dengan cara yang benar, cukup berikan "string lengkap"
Dan bekerja.
sumber
Memposting jawaban 2020 di JSON menggunakan openapi 3.0.0:
sumber
Cara Hackie saya untuk mengatasi ini adalah dengan memodifikasi file swagger.go dalam paket echo-swagger dalam kasus saya:
Di bagian bawah file, perbarui fungsi window.onload untuk menyertakan requestInterceptor yang memformat token dengan benar.
}
sumber