OAuth 2 tidak memiliki spesifikasi tentang token seperti apa yang digunakan. Token digunakan untuk authentication dan merupakan bagian dari request (sebagai httpp header), oleh karena itu ada resiko keamanan. Bagaimana bila token berhasil diambil? Oleh karena itu token sebaiknya memiliki masa hidup (lifespan).
Bagaimana jika masa hidup token berakhir? Tentu saja kita harus mengulangi langkah yang dilakukan saat meminta access token. Tapi ini aneh karena kita perlu melakukan reauthenticate. Ini akan menjadi bad experience bagi user. Untuk menghindari reauthenticate, authorization server dapat memberikan token khusus, refresh token. Token ini digunakan oleh client saat meminta access token yang baru.

Jika tidak ada proses reauthenticate, artinya client akan menyimpan refresh token? Ya, refresh token dapat disimpan oleh client. Refresh token ini juga disimpan di authorization server, jadi kita dapat dengan mudah melakukan revoke apabila refresh token berhasil dicuri.
Refresh token diberikan oleh authorization server bersamaan dengan access token. Refresh token akan diperbaharui ketika client meminta access token yang baru.
Saat meminta access token yang baru client akan mengirimkan request dengan parameter:
- grant_type, dengan value “refresh_token”.
- refresh_token
- client_id dan client_secret.
- scope. Jika scope yang diminta lebih banyak dibanding request sebelumnya, maka perlu dilakukan reauthenticate.
Authorization server akan mengirimkan response berisi access token dan refresh token yang baru.