Oauth 2: зачем обновлять токены должны быть состояниями?

Я работаю над приложением SPA, основанным на узле, с аутентификацией на токенах с использованием JWT. Прямо сейчас, токен jwt не истекает, что не очень хорошо.

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

Поэтому я читаю об OAuth2. Мне сложно понять, почему обновления-токены должны храниться в базе данных, тогда как токен доступа генерируется "на лету" с использованием секретного ключа. Почему обновления токенов не могут быть сгенерированы так же, как токены доступа?

Спасибо вам, ребята !

+1
источник поделиться
1 ответ

Обновление токенов обычно генерируется так же, как токены доступа. Сервер авторизации будет часто возвращать токен обновления и доступа по запросу (и вы не используете неявный тип гранта).

Разница в том, как они используются.

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

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

Если вы представляете токен обновления на сервер авторизации (а не сервер ресурсов), вы получите новый токен доступа и, возможно, новый токен обновления. Разумеется, что пользователь не отменил или изменил права доступа к вашему приложению и что пользователь по-прежнему является действительным пользователем.

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

Альтернатива токену обновления.

Если вы используете неявный грант (что является общим для SPA, но не рекомендуется). Вы можете попытаться сохранить своего конечного пользователя в провайдере идентификации, используемом сервером авторизации. Таким образом, вы можете продолжать запрашивать новые токены доступа с сервера auth без запроса пользователя сервером auth для учетных данных, поскольку сеанс будет сохраняться между поставщиком удостоверений и браузером пользователя.

+1
источник

Посмотрите другие вопросы по метке или Задайте вопрос