Saya harus menggali ini untuk alasan saya sendiri dan menulisnya, jadi saya akan memposting apa yang saya pelajari di sini ...
Pertama, saya akan menjawab pertanyaan dengan risiko menyatakan yang sudah jelas: Token ID tidak dapat dipercaya dan isinya harus diabaikan jika waktu saat ini lebih besar dari waktu kedaluwarsa. Jawaban penanya menyatakan bahwa setelah otentikasi awal pengguna, ID Token tidak digunakan lagi. Namun, karena Token ID ditandatangani oleh penyedia identitas, tentu saja dapat berguna kapan saja untuk memberikan cara yang andal dalam menentukan siapa pengguna ke layanan lain yang mungkin digunakan aplikasi. Menggunakan ID pengguna atau alamat email yang sederhana tidak dapat diandalkan karena dapat dengan mudah dipalsukan (siapa pun dapat mengirim alamat email atau ID pengguna), tetapi karena Token ID OIDC ditandatangani oleh server Otorisasi (yang biasanya juga memiliki keuntungan sebagai pihak ketiga), itu tidak dapat dipalsukan dan merupakan mekanisme otentikasi yang jauh lebih andal.
Misalnya, aplikasi seluler mungkin ingin dapat memberi tahu layanan backend siapa pengguna yang menggunakan aplikasi dan mungkin perlu melakukannya setelah periode singkat setelah otentikasi awal, di mana Token ID kedaluwarsa, dan karenanya, tidak dapat digunakan untuk mengautentikasi pengguna dengan andal.
Oleh karena itu, seperti token akses (digunakan untuk otorisasi - menentukan izin apa yang dimiliki pengguna) dapat diperbarui, dapatkah Anda menyegarkan Token ID (digunakan untuk otentikasi - menentukan siapa pengguna)? Menurut spesifikasi OIDC, jawabannya tidak jelas. Di OIDC / OAuth, ada tiga "aliran" untuk mendapatkan token, Alur Kode Otorisasi, aliran Implisit, dan aliran Hibrid (yang akan saya lewati di bawah karena merupakan varian dari dua lainnya).
Untuk aliran implisit di OIDC / OAuth, Anda meminta Token ID di titik akhir otorisasi dengan mengarahkan pengguna di browser ke titik akhir Otorisasi dan memasukkannya id_token
sebagai nilai response_type
parameter permintaan. Sebuah Implisit Arus Sukses Authentication Respon adalah DIBUTUHKAN untuk menyertakan id_token
.
Untuk alur Kode Otentikasi , klien menentukan code
sebagai nilai response_type
parameter permintaan saat mengarahkan pengguna ke titik akhir otorisasi. Tanggapan yang berhasil menyertakan kode otorisasi. Klien klien membuat permintaan ke titik akhir token dengan kode otorisasi dan, menurut Bagian Inti OIDC 3.1.3.3 Respons Token yang Berhasil , respons HARUS menyertakan Token ID .
Jadi untuk aliran mana pun, begitulah awalnya Anda mendapatkan Token ID, tetapi bagaimana Anda menyegarkannya? OIDC Bagian 12: Menggunakan Refresh Token memiliki pernyataan berikut tentang Respon Refresh Token:
Setelah validasi Refresh Token berhasil, isi respons adalah Token Response dari Bagian 3.1.3.3 kecuali bahwa itu mungkin tidak berisi id_token .
Ini mungkin tidak berisi Token ID dan karena tidak ada cara yang ditentukan untuk memaksanya memasukkan token ID, Anda harus berasumsi bahwa respons tidak akan berisi Token ID. Jadi secara teknis tidak ada cara khusus untuk "menyegarkan" Token ID menggunakan token penyegaran. Oleh karena itu, satu-satunya cara untuk mendapatkan Token ID baru adalah dengan memberi otorisasi ulang / mengautentikasi pengguna dengan mengarahkan pengguna ke titik akhir otorisasi dan memulai aliran implisit atau aliran kode otentikasi seperti yang dijelaskan di atas. Spesifikasi OIDC menambahkan prompt
parameter permintaan ke permintaan otorisasi sehingga klien dapat meminta agar server otorisasi tidak meminta pengguna dengan UI apa pun, tetapi pengalihan masih harus terjadi.