Работа с истечением срока действия токена OAuth 2.0 у потребителя

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

Может ли кто-нибудь указать мне правильное направление, как реализовать это или использовать библиотеку для этой цели, пожалуйста?


person M.Abulsoud    schedule 08.06.2016    source источник


Ответы (2)


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

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

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

Если срок действия токена обновления истек, поток авторизации oAuth должен начаться заново.

person Sravan    schedule 08.06.2016

токен OAuth2, который вы получите, будет иметь в нем продолжительность. Срок действия каждого токена истекает через определенное время, и эта информация отправляется обратно как часть объекта, который вы получаете. Таким образом, вы можете хранить его локально и повторно использовать, пока не истечет время истечения срока действия. По истечении срока действия у вас есть два варианта:

  1. Запросить другой токен
  2. Обновите существующий токен. Многие провайдеры OAuth2 предлагают эту функциональность.

Вопрос только в том, есть ли встроенная библиотека, которую вы используете. Если нет, возможно, вы можете добавить ее самостоятельно.

Изменить

если вы хотите где-то хранить токен, тогда Session будет работать. Срок действия сеанса не истекает, когда пользователь закрывает свой бит браузера, когда он достигает истечения времени ожидания, установленного на самом хосте. Справедливости ради, если они снова откроют приложение позже, им придется снова войти в систему, после чего вы сможете запросить другой токен. Если вы решите использовать функцию Refresh Token, то имеет смысл сохранить ее в самой базе данных и использовать оттуда, поскольку это долгосрочная вещь, а не то, что основано на сеансе.

person Andrei Dragotoniu    schedule 08.06.2016
comment
Является ли сеанс хорошим выбором для хранения токена доступа и времени истечения срока действия? Но в этом случае, если пользователь закрывает свой браузер, ему нужно снова пройти аутентификацию. Я могу использовать файлы cookie для запоминания аутентификации пользователя. Я правильно говорю или что? - person M.Abulsoud; 08.06.2016