OAuth - использование токенов обновления в "социальном знаке"

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

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

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

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

0
источник поделиться
1 ответ

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

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

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

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос