Jawaban ini telah disatukan oleh bantuan dua pengembang senior (John Brayton dan David Jennes).
Alasan utama untuk menggunakan token penyegaran adalah untuk mengurangi permukaan serangan.
Misalkan tidak ada kunci penyegaran dan mari kita lihat contoh ini:
Sebuah bangunan memiliki 80 pintu. Semua pintu dibuka dengan kunci yang sama. Kuncinya berubah setiap 30 menit. Di akhir 30 menit saya harus memberikan kunci lama kepada pembuat kunci dan mendapatkan kunci baru.
Jika saya peretas dan mendapatkan kunci Anda, maka pada akhir 30 menit, saya akan mengirimkannya ke pembuat kunci dan mendapatkan kunci baru. Saya akan dapat terus membuka semua pintu terlepas dari perubahan kunci.
Pertanyaan: Selama 30 menit, berapa banyak peluang peretasan yang saya miliki terhadap kunci? Saya memiliki 80 peluang peretasan, setiap kali Anda menggunakan kunci (anggap ini sebagai membuat permintaan jaringan dan melewati token akses untuk mengidentifikasi diri Anda). Jadi itu permukaan serangan 80X.
Sekarang mari kita lihat contoh yang sama tetapi kali ini mari kita asumsikan ada kunci penyegaran.
Sebuah bangunan memiliki 80 pintu. Semua pintu dibuka dengan kunci yang sama. Kuncinya berubah setiap 30 menit. Untuk mendapatkan kunci baru, saya tidak bisa melewati token akses lama. Saya hanya harus melewati kunci penyegaran.
Jika saya peretas dan mendapatkan kunci Anda, saya dapat menggunakannya selama 30 menit, tetapi pada akhir 30 menit mengirimkannya ke pembuat kunci tidak memiliki nilai. Jika saya melakukannya, maka pembuat kunci hanya akan mengatakan token penyegaran yang buruk ini. Untuk dapat memperpanjang hack saya, saya harus meretas kurir ke pembuat kunci. Kurir memiliki kunci berbeda (anggap ini sebagai token penyegaran).
Pertanyaan: Selama 30 menit, berapa banyak peluang peretasan yang saya miliki terhadap kunci refresh? 80? Tidak. Saya hanya punya 1 kesempatan meretas. Selama ini kurir berkomunikasi dengan pembuat kunci. Jadi itu permukaan serangan 1X. Saya memang memiliki 80 peluang peretasan melawan kunci, tetapi mereka tidak baik setelah 30 menit.
Server akan memverifikasi token akses berdasarkan kredensial dan penandatanganan (biasanya) JWT.
Bocor token akses buruk, tetapi begitu kadaluarsa tidak lagi berguna bagi penyerang. Kebocoran tanda penyegaran jauh lebih buruk, tetapi agaknya kemungkinan itu kecil. (Saya pikir ada ruang untuk mempertanyakan apakah kemungkinan token bocor jauh lebih rendah daripada kebocoran token akses, tapi itulah idenya.)
Poinnya adalah bahwa token akses ditambahkan ke setiap permintaan yang Anda buat, sedangkan token penyegaran hanya digunakan selama aliran penyegaran. Jadi, lebih sedikit peluang MITM melihat token tersebut.
Frekuensi membantu penyerang. Heartbleed - kelemahan keamanan potensial seperti di SSL, kelemahan keamanan potensial di klien, dan kelemahan keamanan potensial di server semua memungkinkan kebocoran.
Selain itu, jika server otorisasi terpisah dari server aplikasi yang memproses permintaan klien lain, maka server aplikasi tidak akan pernah melihat token penyegaran. Itu hanya akan melihat token akses yang tidak akan hidup lebih lama.
Kompartementalisasi baik untuk keamanan.
Terakhir tetapi tidak kalah penting lihat jawaban yang luar biasa ini
Apa token penyegaran BUKAN tentang?
Kemampuan untuk memperbarui / mencabut tingkat akses melalui token penyegaran adalah produk sampingan dari memilih untuk menggunakan token penyegaran, jika tidak token akses mandiri dapat dicabut atau tingkat aksesnya diubah ketika kedaluwarsa dan pengguna mendapat token baru