Проблема с SSO и выходом в Keycloak

Привет!
@david, пожалуйста, помоги, великий человек! ))))

Мне удалось успешно настроить связку Discourse + Keycloak SSO + плагин SAML + плагин OpenID Connect. Единственное, что омрачает эту красоту, — это выход из системы.

Я выхожу из форума, пользователь разлогинивается, эта часть работает корректно.
Однако при просмотре активных сессий в Keycloak сессия пользователя, вышедшего из форума, не удаляется.
Подозреваю, что это связано с настройками URL выхода. Просто не понимаю, где именно нужно изменить настройки — в Discourse или в Keycloak.

Мои настройки SAML в Keycloak:

Мои настройки OpenID Connect в Keycloak:

Плагин OpenID Connect поддерживает выход по инициативе клиента (RP Initiated Logout). Поддерживает ли это Keybase?

Теперь осталось понять, что это такое и есть ли это в Keycloak ))))
Где в плагине openid-connect настраивается эта опция?

Это настраивается в параметрах сайта:

Спасибо! Я попробую найти в Google, что Keycloak говорит по этому вопросу.

Да! Всё работает отлично! Хочу уточнить, что необходимо установить переменную openid_connect_rp_initiated_logout_redirect.

@david У меня есть ещё один вопрос. Важный вопрос.
Сейчас я нахожусь на финальном этапе тестирования SSO через Keycloak и мне нужно выбрать протокол — SAML или OpenID Connect.
Мне больше понравился OpenID Connect, но сейчас я столкнулся с неприятной проблемой при создании новых пользователей при использовании OpenID Connect.

Чтобы понять проблему, начну с другого конца. Когда новый пользователь форума создаётся с помощью SAML, пользователь создаётся в SSO и прозрачно передаётся на создание в Discourse. При этом он сразу активируется — это важно!
То есть, когда я нажимаю кнопку “Регистрация” на форуме Discourse, я перехожу в Keycloak, где создаю пользователя, подтверждаю его email и т. д. После этого меня перенаправляют на форум Discourse, где пользователь уже создан и АКТИВИРОВАН автоматически:

Но если я использую плагин OpenID Connect, то при создании нового пользователя появляется следующее окно:

Это крайне неудобно! Зачем это нужно? Ведь email пользователя уже был подтверждён при создании учётной записи в SSO. Есть ли способ избавиться от этого окна?

Заранее большое спасибо!

Если это сообщение отображается для OpenID Connect, это означает, что провайдер идентификации передал в Discourse сообщение email_verified: false. Если вы включите детальное отладочное логирование, оно выведет все данные аутентификации в /logs для вашего анализа. Надеюсь, найдётся способ заставить Keycloak корректно передавать состояние подтверждения.

Почему тогда плагин SAML игнорирует это?

В плагине SAML это контролируется глобальной настройкой saml_default_emails_valid (по умолчанию true).

Я нашёл решение! ))))
В Keycloak:

Отключите эти опции:

Если вы на 100% уверены, что Keycloak проверил адреса электронной почты, всё в порядке. Если же адреса не проверены, выполнение этого действия откроет ваш сайт Discourse для атак злоумышленников.

Да, всё верно…
Теперь тестируем новый случай — два форума с одним OpenID-клиентом Keycloak ))

Кстати, @david, как ты думаешь, что правильнее:

  1. Использовать одного клиента OpenID для всех форумов и указать необходимые допустимые URL-адреса перенаправления, как у меня сейчас:

  2. Или использовать отдельного клиента OpenID для каждого форума?

Я не знаком с Keycloak, но любой из этих подходов кажется приемлемым. Если позже вы захотите настроить отдельные права доступа для каждого форума, создание отдельных клиентов может упростить эту задачу :man_shrugging: