Задать вопрос
devpav
@devpav
Full-Stack разработчик.

Как реализовать spring oauth2 OIDC backchannel logout?

Всем привет!

Мне очень нужна твоя помощь в понимании механизма работы backchannel logout OIDC.

Прочел:

https://openid.net/specs/openid-connect-backchanne...
https://docs.spring.io/spring-security/reference/s...

Из доки понятно, что сервис авторизации выдает OidcIdToken. Сервер клиент сохраняет у себя в сессии инфо (authorizedClient) и ходит/бродит к серверу авторизации с refresh token и обновляет access_token.

После чего сервис авторизации инициирует выход из системы c OidcLogoutToken и делает запрос к своим клиентам по HTTP POST /logout/connect/back-channel/{registrationId}. Инициировать выход может через "нажатие кнопки на фронте" и "по проверке валидности сессии."

Объясните, правильно ли я понял? Почему spring на стороне oauth2-authorization-server не реализовал logout handler, который мог бы отправлять запросы по ресту клиентам. И правильно ли я понял, что OidcLogoutToken нужно превратить в logout_token и отправлять на сервер клиента по url: /logout/connect/back-channel/{registrationId}?logout_token=....

На стороне сервера авторизации реализуем обход наших клиентов RestOidcLogoutHandler, а на стороне сервиса клиента добавляем:

//...
.oidcLogout { oidcLogoutSpec ->
                oidcLogoutSpec.backChannel { }
                oidcLogoutSpec.oidcSessionRegistry(redisReactiveOidcSessionRepository)
            }
//..


Любому разъяснению буду рад. У меня по этой истории очень много вопросов.

Спасибо, ребята.
  • Вопрос задан
  • 15 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы