Должен ли я хранить доступ и обновлять токен независимо для нескольких клиентов в google oauth2? - PullRequest
1 голос
/ 20 сентября 2019

Я создаю Google oauth2 для моего приложения.Сейчас я начинаю с веб-клиента и планирую мобильный клиент в будущем.

При хранении токенов обновления и доступа в бэкенде я храню токены как refresh_token_web и access_token_web , чтобы было ясно, что эти токены предназначены для веб-клиента.В основном токены хранятся независимо для каждого типа клиента.

Как я понимаю, токены даются для приложения, а не для конкретного клиента.Если пользователь использует oauth2 с помощью мобильного клиента, refresh_token_web все еще будет работать или он выйдет за рамки?

Правильно ли я поступаю, сохраняя токены независимо?Кто-нибудь сталкивался с любой проблемой с этим подходом?

1 Ответ

0 голосов
/ 23 сентября 2019

Как я понимаю, токены даются для приложения, а не для конкретного клиента

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

И еще есть владелец ресурса, которому принадлежит настоящий ресурс.В большинстве случаев это будет пользователь, такой как вы и я.Но иногда есть OAuth-гранты, которые позволяют выдавать токены для клиента.Например, Client Credentials Grant выдача токена клиенту.

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

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

...