Наверняка каждый программист, работающий с OAuth 2.0, задумывался – зачем же нужны Refresh токены, неужели Access токенов недостаточно? 64 KB — Их должно хватать каждому!
Эта тема довольно активно дискутируется – вот и на Stackoverflow [вопрос есть][1] и на [Хабре тоже обсуждается][2]. Собственно, именно обсуждение на Хабре и заставило меня высказаться.
Все предложенные комментаторами и авторами мнения касаются безопасности двухтокенного подхода. Безусловно, так и должно быть, ведь безопасность – это главное для фреймворка авторизации/аутентификации! Но будем откровенны – во многих случаях использования подход с двумя токенами не дает никакого выигрыша в защищенности по сравнению с простым и тупым подходом с одним токеном. Или этого сразу не видно…
_«Refresh токен можно хранить более защищенно!»_ — можно и нужно, хотя почти никто так не делает.
_«Access token передается по сети чаще – и вероятность его утечки больше»_ — полноте, мы ведь всегда используем TLS, правда?
_«Утечка Ассеss токена на так страшна как утечка Refresh токена»_ — да, и это тоже правда, именно поэтому в браузер Refresh токен и не выдается…
Есть много нюансов, есть много сценариев использования, при которых использование разных токенов становится полезным, просто видно их не сразу!
Но есть и еще один аргумент, который я почему-то ни разу не встречал – хотя он, на мой взгляд, полностью объясняет, зачем же нужен Refresh токен и почему нельзя, абсолютно, категорически нельзя обойтись только Access токеном.
**Производительность.**
[Читать дальше →][3]
[1]:
http://stackoverflow.com/questions/3487991/why-does-oauth-v2-have-both-access-and-refresh-tokens
[2]:
https://habrahabr.ru/company/Voximplant/blog/323160/
[3]:
https://habrahabr.ru/post/327702/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut