Статья подразумевает, что у вас уже установлены и настроены Discourse c Keycloak.
Интегрировать Discourse с Keycloak будем через плагин
discourse-oauth2-basic.
Для этого нужно папку плагина
discourse-oauth2-basic перенести в директорию
plugins, которая находится в корневой папке Discourse.
После запуска Discourse c новым плагином, который автоматически подтянется из директории plugins, в админке появятся новые поля настроек. Их можно найти по ссылке
http://localhost:3000/admin/site_settings/category/login, либо найти самостоятельно по пути:
Админка ->
Настройки ->
Учетные записи.
Новые появившиеся поля нужно заполнить в соответствиями с настройками вашего клиента в Keycloak:
Название параметра
| Значение параметра
|
oauth2 enabled
| ✓
|
oauth2 client id
| discourse-client
|
oauth2 client secret
| 3b0eab79-34df-4fd3-861e-6654f3bc4c13
|
oauth2 authorize url
| http://localhost:18100/auth/realms/ltms/protocol/openid-connect/auth
|
oauth2 token url
| http://localhost:18100/auth/realms/ltms/protocol/openid-connect/token
|
oauth2 user json url
| http://localhost:18100/auth/realms/ltms/protocol/openid-connect/userinfo
|
oauth2 json user id path
| sub
|
oauth2 json username path
| name
|
oauth2 json name path
| name
|
oauth2 json email path
| email
|
oauth2 email verified
| ✓
|
oauth2 send auth header
| ✓
|
oauth2 button title
| with OAuth2
|
Применив указанные выше настройки, в интерфейсе аутентификации появится кнопка для авторизации через
OAuth2.

После нажатия кнопки
with OAuth2 (название можно поменять в настройках) открывается окно аутентификации Keycloak.

Успешно залогинившись, вы возвращаетесь в Discourse, который теперь знает о вашем присутствии 🙂