Есть ли способ настроить Keycloak в качестве провайдера аутентификации для Discourse? Мне нужно, чтобы это работало в режиме единого входа (SSO), чтобы пользователи, создавшие учётные записи, управляемые Keycloak, автоматически получали доступ и входили в систему в экземпляр Discourse.
Я читал о конфигурации OpenID, и люди говорят, что при такой настройке пользователям приходится отдельно входить в систему и создавать отдельную учётную запись в Discourse. Это не совсем то, что мне нужно.
Есть ли что-то, что я мог бы/должен был бы прочитать по этой теме?
Моя цель — развернуть Discourse и Keycloak в отдельных контейнерах Docker в составе одного compose-файла и обеспечить бесшовную аутентификацию между ними, чтобы я мог создавать посты в Discourse через свой бэкенд API от имени пользователя, вошедшего в моё JS-приложение на фронтенде, при этом данные пользователей будут управляться Keycloak.
Самое простое решение, которое я применял для пользователей с Keycloak в качестве корпоративной системы IAM, — это настройка SAML для Discourse:
Настройка SAML в Keycloak достаточно проста:
Альтернативно, вы также можете подключить систему через OpenID Connect:
Чтобы пользователи могли автоматически входить в систему через SAML, вам потребуется отключить все остальные методы аутентификации, включая локальный вход. Убедитесь, что у вашей учётной записи администратора уже есть соответствующая учётная запись в Keycloak, иначе вы потеряете доступ к панели администратора.
Интересно, спасибо.
Отключение всех остальных способов входа — не совсем подходящий вариант. Я хочу продолжать использовать Keycloak как основной механизм аутентификации в моём приложении, но при этом дополнительно разрешить пользователям быть в Discourse.
Это означало бы, что мои пользователи должны иметь возможность регистрироваться с помощью логина/пароля или через любую социальную сеть, которую они хотят, и получать учётную запись, которая будет работать и для моего приложения, и для Discourse.
Возможно ли что-то подобное?
PS. Прочитав ещё раз, вы имеете в виду отключение методов аутентификации в Keycloak или в Discourse?
Социальная авторизация или вход по имени пользователя и паролю должны быть реализованы через Keycloak. Кроме того, я только что осознал, что он не выполняет автоматический вход пользователей. Его функция заключается в том, чтобы позволить пользователям напрямую аутентифицироваться в Keycloak при нажатии на кнопку входа.
Итак, допустим, что сначала я хочу получать доступ ко всему через API. Сможу ли я это сделать?
Вход в систему — это часть интерфейса Discourse.
Предположим, что новый пользователь регистрируется на моём сервере Keycloak, и у меня есть эта интеграция SAML. Пользователь вошёл в моё веб-приложение на JavaScript, и у меня есть его токен. Смогу ли я как-то вызвать API Discourse, используя только этот токен?
То есть, если я хочу иметь пользовательский интерфейс для создания постов из моего веб-приложения.