Всем привет!
Мне очень нужна твоя помощь в понимании механизма работы 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)
}
//..
Любому разъяснению буду рад. У меня по этой истории очень много вопросов.
Спасибо, ребята.