Зачем использовать токен обновления JWT - PullRequest
0 голосов
/ 15 ноября 2018

Я не уверен, что понимаю концепцию токенов обновления. Я знаю, что они делают - храните их где-нибудь, и когда истекает срок действия токена доступа, получите новый токен доступа.

Очевидно, что очень важно не пропускать этот токен обновления, потому что в противном случае третье лицо могло бы получить новый токен доступа с ним. Поэтому его необходимо беречь.

Мой вопрос таков: почему бы просто не сохранить маркер доступа с длительным сроком хранения в безопасности? Где разница в безопасности?

Вот как этот факт описан на auth0.com, например ::100100

Преимущество: более короткие окна доступа для токенов доступа с утечкой (срок их действия быстро истекает, что снижает вероятность утечки токена, обеспечивающего доступ к защищенному ресурсу) "

Это не имеет никакого смысла для меня. Таким образом, срок действия маркера доступа быстро истекает, и поэтому он «неплох», если он утек.

С другой стороны, очень плохо, если токен обновления пропущен. Так почему бы просто не попытаться сохранить токен доступа таким же безопасным, как токен обновления, и иметь точно такой же результат, но на один токен меньше, чем нужно управлять?

1 Ответ

0 голосов
/ 15 ноября 2018

Иногда это помогает подумать о другой стороне проблемы, например, эмитент токена, а не владелец токена.

Пример

Представьте, что чья-то учетная запись была удалена / заблокирована администраторами.

В системе токенов нет способа аннулировать все текущие токены - главная точка токенов в стиле JWT заключается в том, что обладание действительным токеном позволяет избежать централизованных проверок (на самом деле то же самое верно сеансовых куки тоже реально).

Проблема с системой с одним токеном

Таким образом, чтобы сделать это более эффективным / удобным, в настройке с одним токеном срок службы этого токена иногда довольно велик, что означает, что владелец ( носитель ) может иметь доступ в течение нескольких часов или дней. О, дорогой.

Решение: обновить токен

Система маркеров обновления, как сказано в руководстве Auth0, позволяет сократить этот нормальный срок службы (например, до минут или секунд), прежде чем потребуется выполнить обновление. На этой точке сервер / централизованный контроль может проверить, была ли заблокирована эта учетная запись или все еще действительны разрешения, и соответственно выдать новый токен доступа. Это все еще достаточно долго, чтобы обеспечить прирост производительности, не вызывая поток аутентификации все время (и, конечно, не отправка учетных данных)

Другой вариант использования

Аналогичным случаем использования является потеря пользователем телефона / устройства, и они должны (эффективно) отозвать токен, который у него был. Надеюсь, это немного поможет.

...