Выход пользователя
Обзор вариантов
Есть несколько вариации организации данного процесса. Процессы схожи, но есть особенности.
Связанный выход пользователя
Особенности:
- средняя сложность интеграция
- подойдет всем проектам
- завершает сессии авторизации во всех связанных с провайдером проектов
Клиентское приложение при авторизации пользователя хранит его токен доступа в сессии/куки. Во время выхода пользователя из учетной записи на стороне клиентского приложения необходимо перенаправить пользователя на специальный эндпоинт выхода. Сервис авторизации для уже авторизованного пользователя выведет окно подтверждения. На странице подтверждения пользователь может выбрать нужное ему действие: продолжить или отмена для возврата. После любого выбора пользователь вернется в приложение клиента. Если выход подтверждается пользователем, то клиентское приложение должно прервать и удалить сессию/куки вместе с токеном доступа.
Подробнее об интеграции см. в отдельной статье.
Частично связанный выход пользователя
Особенности:
- средняя сложность интеграция
- подойдет для закрытых проектов
- частично связывает сессии авторизаций в проектах
Клиентское приложение при авторизации пользователя хранит его токен доступа в сессии/куки. Во время выхода пользователя из учетной записи на стороне клиентского приложения необходимо прервать и удалить сессию/куки вместе с токеном доступа. Далее перенаправить пользователя на стандартную авторизацию по oauth2 добавив параметр prompt=login. Сервис авторизации разлогинит пользователя на своей стороне и выведет пользователю форму авторизации. После авторизации пользователь вернется в приложение клиента.
Независимый выход пользователя
Особенности:
- простая интеграция
- подойдет для проектов с необязательной авторизацией
- не связывает сессии авторизаций в проектах
Клиентское приложение при авторизации пользователя хранит его токен доступа в сессии/куки. Во время выхода пользователя из учетной записи на стороне клиентского приложения необходимо прервать и удалить сессию/куки вместе с токеном доступа.
Независимый выход пользователя с окном подтверждения
Особенности:
- средняя сложность интеграция
- подойдет для закрытых проектов
- не связывает сессии авторизаций в проектах
- добавляет вариативность для пользователя
Клиентское приложение при авторизации пользователя хранит его токен доступа в сессии/куки. Во время выхода пользователя из учетной записи на стороне клиентского приложения необходимо прервать и удалить сессию/куки вместе с токеном доступа. Далее перенаправить пользователя на стандартную авторизацию по oAuth2 добавив параметр prompt=consent. Сервис авторизации для уже авторизованного пользователя выведет окно подтверждения доступа (даже если подтверждение было выдано ранее). На странице подтверждения доступа пользователь может выбрать нужное ему действие: продолжить или выйти для выбора другой учётной записи. После авторизации пользователь вернется в приложение клиента.
Пример процесса выхода по шагам
- Пользователь в клиентском приложении нажимает кнопку "выйти".
- Клиентское приложение очищает сессию пользователя.
- Клиентское приложение запоминает локальную страницу для обратного редиректа пользователя.
- Клиентское приложение редиректит пользователя на страницу с базовым процессом oAuth2 авторизации с указанием нужного значения для параметра prompt (login, consent).
- Сервис авторизации обрабатывает запрос, производит необходимые операции.
- Пользователь повторно авторизируется и попадает обратно в клиентское приложение.
- Клиентское приложение производит авторизацию по oauth2 и возвращает пользователя на запомненную страницу (шаг 3).
При обычной авторизации prompt без надобности отправлять не нужно.