2015-11-04 3 views
0

Нормальный поток для OAuth2, как описано в this SO reply выглядит следующим образом:OAuth - использование токенов обновления в «социальный знак на»

запрос API
  • Отправить с доступом лексем
  • Если маркер доступа неверен, попробуйте обновить его с помощью обновления маркера
  • если запрос обновления проходит, обновить маркер доступа и повторно отправить запрос
  • начальный API Если запрос обновления не удается, попросите пользователя повторно проверить подлинность

Это все хорошо и полезно для большинства вызовов API, но мне интересно одно: аутентификация.

Когда пользователь пытается выполнить вход в мой новый новый webapp с помощью своего любимого сервиса, должен ли я использовать токен обновления (или кеш-ключ доступа в случае OAuth1), чтобы попытаться войти в систему, или я должен всегда идти и получить свежий токен от поставщика услуг (Google, Facebook и т. д.) и отказаться от хранения и обновления токенов?

ответ

0

Аутентификация пользователя и OAuth 2.0 - это две разные вещи. Разница подробно объясняется в: http://oauth.net/articles/authentication/. Даже при создании пользовательских протоколов аутентификации/SSO поверх OAuth 2.0 - это то, что делает OpenID Connect, и некоторые реализации конкретного поставщика - refresh_token все еще всегда относится к access_token не к событию аутентификации пользователя или тождеству идентификации.

Вы не можете использовать токен обновления самостоятельно, чтобы обновить сеанс входа пользователя, поскольку некоторое взаимодействие с пользователем (может быть активным, может быть пассивным) через браузер необходимо подтвердить, что пользователь (все еще) присутствует ,

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