Perbedaan antara 'aud' dan 'iss' di jwt

13

Saya ingin menerapkan layanan otentikasi yang lebih kuat dan jwtmerupakan bagian besar dari apa yang ingin saya lakukan, dan saya mengerti cara menulis kode, tetapi saya mengalami sedikit kesulitan memahami perbedaan antara cadangan issdan audklaim. Saya mengerti bahwa yang mendefinisikan server yang mengeluarkan token dan yang merujuk pada aplikasi yang dimaksudkan untuk digunakan. Tetapi yang saya pahami adalah bahwa audiens dan penerbit saya adalah hal yang sama dengan myserver.commenerbitkan token sehingga orang yang datang ke myserver.comdapat disahkan dan diautentikasi. Saya kira saya tidak melihat perbedaan antara kedua klaim, meskipun saya tahu ada satu.
Ada artikel bagus yang ditulis dimsdn pada semua klaim yang dipesan dan di situlah saya paling bingung karena mereka memiliki penerbit dan pemirsa yang sama sekali berbeda.

Adam McGurk
sumber
Anda mungkin tertarik JWT RFC-7519
Laiv

Jawaban:

10

Ini dimaksudkan untuk skenario di mana Anda memiliki token yang mengeluarkan otoritas yang tidak sama dengan aplikasi yang menjadi penerima yang dimaksud.

Ini mungkin tidak berbeda untuk aplikasi Anda.

Tetapi pertimbangkan aplikasi berskala besar. Anda mungkin memiliki server OAuth atau SSO yang mengeluarkan sertifikat, dan aplikasi yang menginginkan token yang menunjukkan server SSO telah memeriksa kredensial pengguna dan telah menyetujui pengguna untuk menggunakan aplikasi tersebut. Jika demikian, Anda mungkin memiliki token dengan "aud": "aud.example.com"dan "iss": "sso.example.com".

Paul
sumber
Oh begitu. Itu adalah kesalahpahaman di pihak saya karena saya memikirkan dua hal: 1. Anda harus memiliki "iss" dan "aud" sebagai bagian dari klaim. 2. Mereka harus unik satu sama lain. Ini jelas bukan kebenaran. Jadi, jika Anda memiliki aplikasi seperti milik saya, apakah Anda akan memasukkan kedua klaim tersebut ke dalam jwtatau mengabaikannya karena keduanya identik?
Adam McGurk
Anda tentu dapat meninggalkannya dan menambahkannya nanti saat Anda memiliki alasan untuk menggunakannya
Paul
akan audkadang-kadang menjadi pihak ketiga atau tidak?
Andy
Saya kira saya juga bingung mengapa cakupan tidak akan digunakan untuk menunjukkan bahwa pengguna disetujui untuk aplikasi yang diberikan.
Andy
Ya, audbisa berupa nilai tunggal atau array. Seharusnya cocok dengan setiap penerima atau prosesor yang dituju. Katakanlah Anda adalah pengguna (atau aplikasi) yang ingin memanggil api.example.com untuk menjalankan kueri. Jika api.example.com mempercayai beberapa layanan auth pihak ketiga (misalnya Auth0) untuk menangani otentikasi, maka layanan auth tersebut harus diisi auddengan 'api.example.com', dan aplikasi di 'api.example.com' harus memverifikasi bahwa itulah kasus. Lingkup lebih rinci daripada audiens, dan dapat dimasukkan dalam payload juga.
Paul