Как уже упоминалось здесь, я считаю, что было бы отличной функцией, если бы Discourse поддерживал протокол SCIM. SCIM — это стандарт, предложенный IETF через RFC7644 и RFC7643, который направлен на предоставление решений для управления пользователями и группами через простой REST API. Наш случай использования заключается в управлении идентификацией пользователей и членством в группах через отдельный сервис, выступающий в роли SCIM-клиента; в нашем случае это Keycloak. Discourse будет действовать как SCIM-провайдер услуг. В дополнение к существующим возможностям SSO и централизованного создания учётных записей это даст следующие преимущества:
назначение пользователей в группы;
немедленное изменение информации о пользователях в нескольких приложениях;
удаление пользователя, когда он исключён из SSO;
получение списка пользователей или групп стандартным способом;
…
Мы получили финансирование от NGI через NLNet на реализацию SCIM; вы можете прочитать предложение и информацию о связанной работе на нашем форуме здесь. Я пока попробую реализовать первое решение в виде плагина для Discourse, но было бы здорово в будущем интегрировать это в ядро Discourse. Буду рад узнать ваше мнение и предложения!
Кажется странным, что их спецификация использует /Users и /Groups вместо чего-то вроде .well-known/scim/Users. Очевидно, что это будет конфликтовать с существующими маршрутами во многих приложениях.
Я с радостью помогу с этим, если у вас есть свободный бюджет.
Представляю, что если решение будет хорошо написано и широко использоваться (или потребуется несколькими корпоративными клиентами), оно может стать официальным плагином.
Не думаю, что оно когда-либо войдёт в ядро — даже OAuth2 является плагином.
Я считаю, что в качестве префикса для конечных точек SCIM можно использовать любой путь, например api/scim/v2/Users или известные пути, которые вы предложите.
Да, я понимаю опасения, связанные с ядром, поэтому, возможно, целью может стать то, что это станет официальным плагином. Спасибо также за предложение помощи; дополнительного бюджета нет, но посмотрим, как это будет развиваться в будущем.
Маппинг пока очень простой: работают только базовые поля пользователей и групп. Я протестировал это с плагином SCIM для Keycloak, и вы уже можете добавлять/изменять пользователей в Keycloak, после чего они будут создаваться/обновляться в Discourse. Плагин SCIM для Keycloak находится здесь:
Любые отзывы очень приветствуются Мы продолжим тестирование с Keycloak в нашей среде, а также планирую протестировать его с Authentik.