Как войти в систему на сервере аутентификации OAuth2? - PullRequest
1 голос
/ 01 апреля 2019

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

Что ставит вопрос о том, как сервер авторизации идентифицирует клиента SPA. Связанный вопрос подразумевает, что он неизменно осуществляется через систему, не основанную на OAuth2, такую ​​как файлы cookie. Это тот случай?

1 Ответ

0 голосов
/ 02 апреля 2019

Как вы определили, SPA не должен выдаваться с токеном обновления.Как только поток OAuth будет завершен, они получат токены, которые могут быть либо сохранены в файле cookie, либо в локальном хранилище (что лучше между ними? Ну, есть много аргументов за и против. Я предпочитаю локальное хранилище).

При доступесрок действия токена истек, вы должны повторно запросить авторизацию на сервере авторизации.Этот запрос по определению протокол OAuth включает client_id и redirect_url .Когда сервер получает запрос, он сначала проверяет эти параметры, чтобы определить действительность клиента.Только тогда он решит запросить логин или использовать куки для определения состояния входа в систему.Так определяется ваш SPA.

Кроме того, один важный момент.Если ваш сервер авторизации поддерживает OpenID Connect, то вы можете использовать параметр prompt = none в запрос авторизации .Это называется быстрым входом в систему, который должен работать, если на сервере авторизации ранее зарегистрирован пользовательский файл cookie, связанный с браузером.Хотя это происходит с OpenID Connect, в зависимости от реализации вы можете использовать этот параметр и с OAuth.

Если все механизмы не работают, к сожалению, ваш SPA должен повторно войти в систему.

...