Я создавал свой собственный сервер oauth2 с поддержкой единого входа для Google и Facebook. Я нашел этот пример https://github.com/spring-guides/tut-spring-boot-oauth2 очень полезным, и я смог сделать мой сервер oauth2 расширяемым после нескольких настроек.
Для хранения сессий я использовал redis, и все, кажется, работает с весенней магией.
Однако я столкнулся с проблемой сеанса при реализации выхода из системы. В соответствии с рекомендациями единого входа, когда пользователь выходит из системы с одного клиента, все другие клиенты с таким же сеансом с сервера аутентификации также должны быть отключены. Поэтому я добавил конечную точку для каждого клиента для вызова при успешном входе в систему, чтобы зарегистрировать его имя на основе сеанса пользователя с сервера авторизации. Однако я заметил, что каждый раз, когда я обновляю страницу в своем клиентском веб-приложении, я получаю новый сеанс с сервера аутентификации. В результате каждый раз, когда я пытаюсь выйти из системы, сеанс, связанный со всеми зарегистрированными клиентами, всегда становится старым.
Я искал решения в Интернете, но пока не повезло. Буду очень признателен, если кто-нибудь сможет мне помочь с этим вопросом.
TL; версия DR:
Я реализовал сервер oauth2 с включенным SSO для Facebook с помощью Spring Boot. После того, как я успешно вошел в систему с моей учетной записью Facebook, я могу видеть ресурсы моего клиентского веб-приложения. Каждый раз, когда я обновляю страницу, я вижу, что с сервера oauth2 создается новый сеанс, он сохраняется в хранилище redis, а все старые сеансы также хранятся в хранилище.
UPDATE
Кажется, что все новые сеансы генерируются анонимными пользователями каждый раз, когда я обновляю страницу.