AspNet.Security.OpenIdConnect.Server. Обновить токены
Насколько я знаю, ASOS поддерживает токены обновления из коробки. Чтобы получить токен обновления мне нужно добавить offline_access
объем моего запроса токена. Но где они хранятся? Как я могу изменить срок действия токена или удалить его? Как определить, для какого пользователя создан токен обновления?
1 ответ
Но где они хранятся?
По умолчанию они нигде не хранятся: они автономны. Пока ключи шифрования, используемые для защиты токенов обновления, все еще находятся в кольце ключей защиты данных ASP.NET, они могут быть расшифрованы ASOS и использованы для выпуска новых токенов доступа.
Как я могу изменить срок действия токена?
Срок действия по умолчанию может быть установлен глобально из опций, используя RefreshTokenLifetime
имущество. Если вы не предоставите свою собственную жизнь, они действительны в течение 14 дней.
Обратите внимание, что скользящий срок действия также включен по умолчанию, что означает, что вы получаете новый токен обновления (действителен в течение 14 дней) каждый раз, когда вы делаете новый grant_type=refresh_token
запрос. Вы можете отключить скользящий срок действия, установив UseSlidingExpiration
в false
,
... или удалить?
Поскольку токены обновления являются автономными, вы не можете их удалить. Конечно, вы можете рассмотреть возможность использования пользовательских токенов (например, уникальных строк, соответствующих записи в базе данных), переопределив SerializeRefreshToken
а также DeserializeRefreshToken
события, но рекомендуемый подход - просто считать их недействительными при получении запроса на обновление токена.
Для этого вы можете переопределить HandleTokenRequest
событие и звонок context.Reject()
если вы считаете, что refresh_token
был отозван и не может использоваться для выдачи новых токенов.
Как определить, для какого пользователя создан токен обновления?
Маркеры обновления содержат все утверждения, которые вы добавляете при создании оригинального билета аутентификации, поэтому, если вы добавите sub
Заявка, соответствующая идентификатору пользователя, позволяет использовать его для извлечения профиля пользователя из базы данных.