Могу ли я использовать токен ID для аутентификации пользователя?

#oauth-2.0 #oauth #google-oauth #openid #google-openid

#oauth-2.0 #oauth #google-oauth #OpenID #google-OpenID

Вопрос:

Я разрабатываю приложение Cordova с собственной аутентификацией Google. Я просто хочу, чтобы пользователи создавали свою учетную запись и / или входили в мое приложение, используя кнопку «Войти с помощью Google». Ничего больше.

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

Что теперь? Какой лучший подход?

Могу ли я использовать этот идентификационный токен «ad-vitam-eternam»? Могу ли я полагаться на этот токен для безопасной аутентификации пользователей на моем сервере? Если да, должен ли я хранить его в httpOnly cookie на стороне клиента?

Google говорит, что я должен создать сеанс. Как в сеансе PHP? Это не очень REST, что нужно делать.

Означает ли это, что мне придется создавать свои собственные токены после проверки токена ID?

Я знаю, что существует много документации, но это сложно и не всегда просто.

Большое вам спасибо за ваши разъяснения

Ответ №1:

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

У ID-токена обычно очень короткое время жизни, поэтому предполагается, что он используется только для создания локального пользователя / удостоверения. Таким образом, нет реальной необходимости хранить этот токен в файле cookie.

Вместе с токеном ID вы также можете получить токен доступа. Вы используете этот токен доступа для доступа к API Google, если хотите это сделать.

Ответ №2:

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