# Интеграция Discourse с Keycloak

**URL:** https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670
**Category:** SSO
**Created:** [10.Март.2022 20:38:59 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670 "2022-03-10T20:38:59Z")
**Posts on this page:** 16
**Page:** 1

<div class="post-metadata">

### Author: ![Ndacyayisenga-droid](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ndacyayisenga-droid/32/252728_2.png) [@Ndacyayisenga-droid](https://meta.discourse.org/u/Ndacyayisenga-droid)
#### Post date: [10.Март.2022 20:38:59 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/1 "2022-03-10T20:38:59Z")

</div>

Я хотел бы интегрировать Discourse с **Keycloak**. Есть какие-либо советы, как это сделать? Спасибо.

С уважением,  
Ндацайисенга

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [10.Март.2022 20:48:10 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/2 "2022-03-10T20:48:10Z")

</div>

Keycloak поддерживает OpenID Connect, поэтому вы можете интегрироваться с ним, используя [плагин аутентификации OpenID Connect](https://meta.discourse.org/t/openid-connect-authentication-plugin/103632)

---

<div class="post-metadata">

### Author: ![ldywicki](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ldywicki/32/259173_2.png) [@ldywicki](https://meta.discourse.org/u/ldywicki)
#### Post date: [05.Май.2022 21:40:13 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/3 "2022-05-05T21:40:13Z")

</div>

Несколько лет назад я написал плагин для Keycloak (провайдер идентификации) для входа в Keycloak через API аутентификации Discourse. Не уверен, что он совместим с недавними изменениями в SSO Discourse, но если вам нужен этот компонент, я, возможно, смогу опубликовать его в будущем.

---

<div class="post-metadata">

### Author: ![Ndacyayisenga-droid](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ndacyayisenga-droid/32/252728_2.png) [@Ndacyayisenga-droid](https://meta.discourse.org/u/Ndacyayisenga-droid)
#### Post date: [06.Май.2022 13:29:17 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/4 "2022-05-06T13:29:17Z")

</div>

> [@Łukasz Dywicki](#):
>
> Но если вам нужна эта часть, я смогу опубликовать её в какой-то момент.

@ldywicki Я был бы рад.

---

<div class="post-metadata">

### Author: ![gschmid](https://avatars.discourse-cdn.com/v4/letter/g/a698b9/32.png) [@gschmid](https://meta.discourse.org/u/gschmid)
#### Post date: [13.Июнь.2023 16:58:50 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/5 "2023-06-13T16:58:50Z")

</div>

Здравствуйте,  
Я несколько раз искал информацию на Discourse Meta, но не смог найти то, что мне нужно (существующие обсуждения либо не имеют ответов, либо кажутся устаревшими).

У нас уже работает Keycloak для управления пользователями (мы используем его, например, для аутентификации пользователей в наших собственных приложениях).  
Теперь мы настроили экземпляр Discourse и хотели бы использовать Keycloak в качестве провайдера единого входа (SSO).

Правильно ли я понимаю, что для этого следует использовать [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true)? Или нам нужен (или дополнительно) плагин для OpenID или SAML?  
Что необходимо настроить на стороне Keycloak? Это стандартная конфигурация или требуется установка плагина?

Заранее спасибо!  
Гуннар

---

<div class="post-metadata">

### Author: ![Alexander](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alexander/32/497634_2.png) [@Alexander](https://meta.discourse.org/u/Alexander)
#### Post date: [13.Июнь.2023 21:02:42 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/6 "2023-06-13T21:02:42Z")

</div>

Привет, @gschmid, добро пожаловать на Discourse Meta 👋

В данном случае лучше всего использовать плагин, возможно, OAuth2 Basic или Discourse SAML, в зависимости от ваших конкретных потребностей.

Ниже я привожу ссылки на них:

> [@Discourse OAuth2 Basic](https://meta.discourse.org/t/discourse-oauth2-basic-support/33879):
>
> discourse2Summary Discourse OAuth2 Basic supports basic OAuth2 providers, assuming they have a JSON API endpoint where user details can be retrieved by token.open_bookInstall Guide This plugin is bundled with Discourse core. There is no need to install the plugin separately. Features This plugin allows you to use a basic OAuth2 provider as authentication for Discourse. It should work with many providers, with the caveat that they must provide a JSON endpoint for retri…

> **[GitHub - discourse/discourse-saml: Support for SAML in Discourse](https://github.com/discourse/discourse-saml)**
>
> Support for SAML in Discourse

Если вам понадобится помощь, я с радостью окажу её 😄

---

<div class="post-metadata">

### Author: ![gschmid](https://avatars.discourse-cdn.com/v4/letter/g/a698b9/32.png) [@gschmid](https://meta.discourse.org/u/gschmid)
#### Post date: [14.Июнь.2023 06:00:05 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/7 "2023-06-14T06:00:05Z")

</div>

Привет, Александр,

спасибо за быстрый ответ.

Значит, мне вообще не нужен [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true)? Тогда какова его цель?

---

<div class="post-metadata">

### Author: ![Alexander](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alexander/32/497634_2.png) [@Alexander](https://meta.discourse.org/u/Alexander)
#### Post date: [15.Июнь.2023 12:41:56 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/8 "2023-06-15T12:41:56Z")

</div>

Ваш сервер аутентификации (или, возможно, API или аналогичный сервис) должен иметь процесс, совместимый с [Discourse Connect](https://meta.discourse.org/t/13045?silent=true) (объяснено [здесь](https://meta.discourse.org/t/setup-discourseconnect-official-single-sign-on-for-discourse-sso/13045#)).

Keycloak не имеет нативной поддержки в данном случае, поэтому более целесообразно использовать один из упомянутых выше плагинов.

---

<div class="post-metadata">

### Author: ![gschmid](https://avatars.discourse-cdn.com/v4/letter/g/a698b9/32.png) [@gschmid](https://meta.discourse.org/u/gschmid)
#### Post date: [15.Июнь.2023 15:21:28 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/9 "2023-06-15T15:21:28Z")

</div>

Я знаком с документацией [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true), но не смог собрать всё воедино. Просто из любопытства: какие серверы аутентификации поддерживают это из коробки?

В любом случае, я сейчас попробую запустить рекомендуемый(ые) плагин(ы). Ещё раз спасибо.

---

<div class="post-metadata">

### Author: ![ldywicki](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ldywicki/32/259173_2.png) [@ldywicki](https://meta.discourse.org/u/ldywicki)
#### Post date: [18.Июнь.2023 16:22:13 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/10 "2023-06-18T16:22:13Z")

</div>

Хорошо, первая часть работы выполнена — [GitHub - Code-House/keycloak-discourse: Integration between Keycloak and Discorse.. using Keycloak APIs to do so. · GitHub](https://github.com/Code-House/keycloak-discourse).  
Этот репозиторий содержит код, необходимый для того, чтобы Keycloak мог получать информацию об идентификации из Discourse, используя протокол «[Discourse Connect](https://meta.discourse.org/t/13045?silent=true)».

---

<div class="post-metadata">

### Author: ![ldywicki](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ldywicki/32/259173_2.png) [@ldywicki](https://meta.discourse.org/u/ldywicki)
#### Post date: [18.Июнь.2023 16:27:09 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/11 "2023-06-18T16:27:09Z")

</div>

Keycloak — это универсальный провайдер идентификации: он предоставляет конечные точки, совместимые с OpenID Connect, для аутентификации внешних приложений. Вы можете связать Keycloak с Discourse с помощью плагина [discourse-openid-connect](https://meta.discourse.org/t/discourse-openid-connect/103632).

[Discourse Connect](https://meta.discourse.org/t/13045?silent=true) работает немного иначе. Насколько я понимаю, он позволяет полностью делегировать управление пользователями Keycloak, что может быть не тем, что вам нужно на начальном этапе.

Обратите внимание: я создал интеграцию, позволяющую Keycloak работать с [Discourse в качестве провайдера идентификации](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/4). Судя по всему, возможно реализовать конечную точку, совместимую с [Discourse Connect](https://meta.discourse.org/t/13045?silent=true), для Keycloak, но это уже другая история. 😉

---

<div class="post-metadata">

### Author: ![gschmid](https://avatars.discourse-cdn.com/v4/letter/g/a698b9/32.png) [@gschmid](https://meta.discourse.org/u/gschmid)
#### Post date: [19.Июнь.2023 11:50:43 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/12 "2023-06-19T11:50:43Z")

</div>

> [Discourse Connect](https://meta.discourse.org/t/13045) немного отличается. Насколько я понимаю, он позволяет полностью делегировать управление пользователями Keycloak, что может быть не совсем тем, что вам нужно на начальном этапе.

На самом деле, это именно то, что я хотел бы иметь, но поскольку, похоже, нет простого решения для этого, я пытаю удачу с плагином OIDC.

---

<div class="post-metadata">

### Author: ![ldywicki](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ldywicki/32/259173_2.png) [@ldywicki](https://meta.discourse.org/u/ldywicki)
#### Post date: [19.Июнь.2023 12:04:19 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/13 "2023-06-19T12:04:19Z")

</div>

> [@gschmid](#):
>
> На самом деле, это именно то, что я хотел бы иметь, но поскольку, похоже, нет простого решения, я пробую свои силы с плагином OIDC.

Я смогу предоставить такую интеграцию для Keycloak. Для этого потребуется расширение другого API внутри Keycloak (протокол входа). Напомните мне в июле, чтобы я это сделал. 😉

---

<div class="post-metadata">

### Author: ![danir.de](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/danir.de/32/260749_2.png) [@danir.de](https://meta.discourse.org/u/danir.de)
#### Post date: [07.Ноябрь.2024 03:51:21 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/15 "2024-11-07T03:51:21Z")

</div>

Привет, @ldywicki! Я скомпилировал последнюю версию модуля провайдера идентификации Keycloak, но, похоже, она несовместима ни с последней версией Discourse, ни с последней версией Keycloak. Не могли бы вы обновить его? 😊 Спасибо за вашу работу!

---

<div class="post-metadata">

### Author: ![ldywicki](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ldywicki/32/259173_2.png) [@ldywicki](https://meta.discourse.org/u/ldywicki)
#### Post date: [08.Ноябрь.2024 18:34:55 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/16 "2024-11-08T18:34:55Z")

</div>

Привет, Данир,  
Я смогу обновить это дополнение, но мне нужно немного времени. Ты застал меня незадолго до переезда, поэтому мне потребуется время, чтобы проверить, что происходит с более свежими версиями Keycloak.

---

<div class="post-metadata">

### Author: ![kOS](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kos/32/441826_2.png) [@kOS](https://meta.discourse.org/u/kOS)
#### Post date: [09.Ноябрь.2024 11:17:17 UTC](https://meta.discourse.org/t/intergrate-discourse-with-keycloak/220670/17 "2024-11-09T11:17:17Z")

</div>

@ldywicki  
Чем ваш Keycloak Spinup отличается от обычного Keycloak?

Я установил оригинальный Keycloak через Docker.  
Без каких-либо сообщений об ошибках в консоли пользователь попадает на экран входа с бесконечно вращающимся индикатором загрузки после аутентификации через Keycloak.

 ![Это изображение, по-видимому, является скриншотом страницы входа, на которой отображается зелёный круг и текст «Welcome!». (Подписано ИИ)](https://global.discourse-cdn.com/meta/original/4X/d/3/a/d3a3bc5b335d71e438ffdb5c5475ea9692f6d1f0.png)

Я не могу найти причину этого. Пожалуйста, помогите.
