ОписаниеКак знать, если маркер доступа OAuth истек
В шаблоне Web Api проекта, после отправки POST
запрос Токен конечной точки: www.mycoolwebsite.com/Token
, мы получаем Json похожее на это:
{
"access_token":"qkRwQD0A85...",
"token_type":"bearer",
"expires_in":14,
"userName":"[email protected]",
".issued":"Wed, 24 Feb 2016 18:15:53 GMT",
".expires":"Wed, 24 Feb 2016 18:16:08 GMT"
}
на стороне клиента (скажем мобильное приложение) Я спасаю этот JSON на файл, и посмотреть, если токен истек, я сравниваю DateTime.UtcNow
, чтобы маркер .expires
ключа.
Вопрос
Является ли это правильный путь, чтобы увидеть, если маркер доступа истекло?
Если нет, что лучше всего проверить это?
Я согласен с @sdoxsee Access_token должен быть непрозрачным для клиента. Строка обычно непрозрачна для клиента. (https://tools.ietf.org/html/rfc6749#section-1.4) – jwilleke
@sdoxsee Server также возвращает 401 для другого несанкционированного доступа к ресурсам, даже если токен действителен. Кроме того, мое мобильное приложение хранит этот токен в переменной, если эта переменная не является «null», приложение считает, что пользователь подписан, даже если токен истек. Итак, я хочу знать, что является лучшим механизмом для входа/выхода пользователя из мобильного клиента? Спасибо –
@AliSharabiani В спецификации указано, что 401s предназначены для недействительных токенов, а 403 - для недостаточной области (то есть привилегий) https://tools.ietf.org/html/rfc6750#section-3.1. Обработка аутентификации (вход/выход) - это отдельный вопрос. OAuth2 не предназначен для аутентификации напрямую. OpenID Connect добавляет уровень аутентификации поверх OAuth2. Я не уверен, что вы можете изменить свой сервер авторизации, но вот введение в .NET OpenID Connect one: https://vimeo.com/113604459 – sdoxsee