aud
Klaim JWT (Audience)
Menurut RFC 7519 :
Klaim "aud" (audiens) mengidentifikasi penerima yang menjadi tujuan JWT. Setiap prinsipal yang dimaksudkan untuk memproses JWT HARUS mengidentifikasi dirinya sendiri dengan nilai dalam klaim audiens. Jika prinsipal yang memproses klaim tidak mengidentifikasi dirinya dengan nilai dalam klaim "aud" saat klaim ini ada, JWT HARUS ditolak. Dalam kasus umum, nilai "aud" adalah larik string peka huruf besar / kecil, masing-masing berisi nilai StringOrURI. Dalam kasus khusus ketika JWT memiliki satu audiens, nilai "aud" MUNGKIN berupa string peka huruf besar kecil yang berisi nilai StringOrURI. Interpretasi nilai-nilai khalayak umumnya berlaku khusus untuk aplikasi.
Penggunaan klaim ini OPSIONAL.
aud
Klaim Audience ( ) seperti yang didefinisikan oleh spesifikasi bersifat umum, dan khusus untuk aplikasi. Tujuan penggunaan adalah untuk mengidentifikasi penerima token yang dituju. Yang dimaksud penerima adalah khusus aplikasi. Nilai audiens bisa berupa daftar string, atau bisa berupa string tunggal jika hanya ada satu aud
klaim. Pencipta token tidak memberlakukan yang aud
divalidasi dengan benar, tanggung jawab berada pada penerima untuk menentukan apakah token tersebut harus digunakan.
Apa pun nilainya, ketika penerima memvalidasi JWT dan ingin memvalidasi bahwa token dimaksudkan untuk digunakan untuk tujuannya, itu HARUS menentukan nilai apa dalam aud
mengidentifikasi dirinya sendiri, dan token hanya boleh memvalidasi jika ID yang dinyatakan penerima adalah hadir dalam aud
klaim. Tidak masalah jika ini adalah URL atau string khusus aplikasi lainnya. Misalnya, jika sistem saya memutuskan untuk mengidentifikasi dirinya aud
dengan string: api3.app.com
maka sistem seharusnya hanya menerima JWT jika aud
klaim berisi api3.app.com
daftar nilai audiensnya.
Tentu saja penerima dapat memilih untuk mengabaikannya aud
, jadi ini hanya berguna jika penerima menginginkan validasi positif bahwa token dibuat khusus untuknya.
Penafsiran saya berdasarkan spesifikasinya adalah bahwa aud
klaim tersebut berguna untuk membuat JWT yang dibuat khusus yang hanya valid untuk tujuan tertentu. Untuk satu sistem, ini mungkin berarti Anda ingin token valid untuk beberapa fitur, tetapi tidak valid untuk yang lain. Anda dapat menerbitkan token yang dibatasi hanya untuk "audiens" tertentu, sambil tetap menggunakan kunci dan algoritme validasi yang sama.
Karena pada umumnya, JWT dibuat oleh layanan tepercaya, dan digunakan oleh sistem tepercaya lainnya (sistem yang tidak ingin menggunakan token yang tidak valid), sistem ini hanya perlu mengoordinasikan nilai yang akan mereka gunakan.
Tentu saja, aud
sepenuhnya opsional dan dapat diabaikan jika kasus penggunaan Anda tidak menjaminnya. Jika Anda tidak ingin membatasi token untuk digunakan oleh audiens tertentu, atau tidak ada sistem Anda yang benar-benar akan memvalidasi aud
token tersebut, maka itu tidak berguna.
Contoh: Akses vs. Segarkan Token
Satu contoh yang dibuat-buat (namun sederhana) yang dapat saya pikirkan adalah mungkin kita ingin menggunakan JWT untuk mengakses dan menyegarkan token tanpa harus menerapkan kunci enkripsi dan algoritme terpisah, tetapi hanya ingin memastikan bahwa token akses tidak akan divalidasi sebagai token penyegaran, atau sebaliknya -versa.
Dengan menggunakan aud
kita dapat menentukan klaim refresh
untuk token penyegaran dan klaim access
untuk token akses setelah membuat token ini. Saat permintaan dibuat untuk mendapatkan token akses baru dari token penyegaran, kita perlu memvalidasi bahwa token penyegaran adalah token penyegaran asli. The aud
validasi seperti dijelaskan di atas akan memberitahu kita apakah tanda itu sebenarnya refresh valid token mencari khusus untuk klaim refresh
di aud
.
ID Klien OAuth vs. aud
Klaim JWT
Client ID OAuth sama sekali tidak terkait, dan tidak memiliki korelasi langsung dengan aud
klaim JWT . Dari perspektif OAuth, token adalah objek buram.
Aplikasi yang menerima token ini bertanggung jawab untuk mem-parsing dan memvalidasi arti dari token ini. Saya tidak melihat banyak manfaat dalam menentukan ID Klien OAuth dalam aud
klaim JWT .
aud REQUIRED for session_token. Contains the client_id of the client receiving the assertion.