2016-02-24 3 views
2

ОписаниеКак знать, если маркер доступа 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 ключа.

Вопрос

Является ли это правильный путь, чтобы увидеть, если маркер доступа истекло?

Если нет, что лучше всего проверить это?

ответ

2

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

+0

Я согласен с @sdoxsee Access_token должен быть непрозрачным для клиента. Строка обычно непрозрачна для клиента. (https://tools.ietf.org/html/rfc6749#section-1.4) – jwilleke

+0

@sdoxsee Server также возвращает 401 для другого несанкционированного доступа к ресурсам, даже если токен действителен. Кроме того, мое мобильное приложение хранит этот токен в переменной, если эта переменная не является «null», приложение считает, что пользователь подписан, даже если токен истек. Итак, я хочу знать, что является лучшим механизмом для входа/выхода пользователя из мобильного клиента? Спасибо –

+1

@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

Смежные вопросы