audKlaim 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.
audKlaim 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 audklaim. Pencipta token tidak memberlakukan yang auddivalidasi 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 audmengidentifikasi dirinya sendiri, dan token hanya boleh memvalidasi jika ID yang dinyatakan penerima adalah hadir dalam audklaim. Tidak masalah jika ini adalah URL atau string khusus aplikasi lainnya. Misalnya, jika sistem saya memutuskan untuk mengidentifikasi dirinya auddengan string: api3.app.commaka sistem seharusnya hanya menerima JWT jika audklaim berisi api3.app.comdaftar 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 audklaim 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, audsepenuhnya 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 audtoken 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 audkita dapat menentukan klaim refreshuntuk token penyegaran dan klaim accessuntuk 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 audvalidasi seperti dijelaskan di atas akan memberitahu kita apakah tanda itu sebenarnya refresh valid token mencari khusus untuk klaim refreshdi aud.
ID Klien OAuth vs. audKlaim JWT
Client ID OAuth sama sekali tidak terkait, dan tidak memiliki korelasi langsung dengan audklaim 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 audklaim JWT .
aud REQUIRED for session_token. Contains the client_id of the client receiving the assertion.