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:
this.authentications = {
'Bearer': {type: 'apiKey', 'in': 'header', name: 'Authorization'}
};
Tidak ada cara untuk meneruskan token ke header sebelum metode (titik akhir) dipanggil. Perhatikan tanda tangan fungsi ini:
this.rootGet = function(callback) { ... }
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:
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'
Ini akan menghasilkan klien dengan parameter baru pada tanda tangan metode:
this.rootGet = function(authorization, callback) {
// ...
var headerParams = {
'authorization': authorization
};
// ...
}
Untuk menggunakan metode ini dengan cara yang benar, cukup berikan "string lengkap"
// 'token' and 'cb' comes from elsewhere
var header = 'Bearer ' + token;
sdk.rootGet(header, cb);
Dan bekerja.