2016-06-08 4 views
0

У меня есть клиентское приложение, использующее oauth2 с полномочиями пароля владельца ресурса авторизации. Я пишу curl http-запрос для получения токена доступа, когда пользователь предоставляет свои учетные данные, но как запросить другой токен доступа, когда первый истек. Я читал, что полезно оценить действительность токена доступа. I found this client library, но я не думаю, что он решит мою проблему, связанную с запросом нового токена доступа, как только он истечет, или даже когда истек токен обновления.Работа с OAuth 2.0 Срок действия токена у потребителя

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

ответ

0

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

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

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

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

0

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

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

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

Редактировать

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

+0

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

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