# Adicione suporte a SCIM como provedor de serviço

**URL:** https://meta.discourse.org/t/add-scim-support-as-service-provider/328042
**Category:** Feature
**Tags:** sso
**Created:** [25 Setembro , 2024 08:38 UTC](https://meta.discourse.org/t/add-scim-support-as-service-provider/328042 "2024-09-25T08:38:26Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![pbouda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pbouda/32/449990_2.png) [@pbouda](https://meta.discourse.org/u/pbouda)
#### Post date: [25 Setembro , 2024 08:38 UTC](https://meta.discourse.org/t/add-scim-support-as-service-provider/328042/1 "2024-09-25T08:38:26Z")

</div>

Como já mencionado [aqui](https://meta.discourse.org/t/is-there-a-way-to-handle-identity-management-from-the-idp/304274), acho que seria um recurso interessante se o Discourse suportasse o protocolo SCIM. SCIM é um padrão proposto pelo IETF através das RFCs 7644 e 7643, que visa fornecer uma solução para gerenciamento de usuários/grupos através de uma API Rest simples. Nosso caso de uso seria gerenciar identidades de usuários e associações de grupos via um serviço separado que atua como cliente SCIM, o Keycloak no nosso caso. O Discourse atuaria como um provedor de serviços SCIM. Além de qualquer SSO existente e criação centralizada de contas, isso teria as seguintes vantagens:

- atribuir usuários a grupos;
- alterar informações do usuário imediatamente em vários aplicativos;
- excluir o usuário quando ele for removido do SSO;
- obter a lista de usuários ou grupos de forma padronizada;
- …

Recebemos financiamento da NGI via NLNet para implementações SCIM, você pode ler a proposta e sobre trabalhos relacionados [em nosso fórum aqui](https://forum.indiehosters.net/t/candidature-ngi-nlnet-privacy-trust-enhancing-technologies/4715). Tentarei implementar uma primeira solução em um plugin do Discourse por enquanto, mas seria bom integrar isso ao core do Discourse em algum momento. Me avisem sobre quaisquer pensamentos e opiniões!

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [25 Setembro , 2024 14:42 UTC](https://meta.discourse.org/t/add-scim-support-as-service-provider/328042/2 "2024-09-25T14:42:53Z")

</div>

Parece estranho que a especificação deles use `/Users` e `/Groups` em vez de algo como `.well-known/scim/Users`. Parece garantido que isso entrará em conflito com rotas existentes em muitas aplicações.

Ficarei feliz em ajudar com isso se você tiver algum orçamento sobrando.

Posso imaginar que, se fosse bem escrito e amplamente utilizado (ou exigido por vários clientes corporativos), poderia se tornar um plugin oficial.

Não imagino que isso se tornaria parte do núcleo - mesmo o Oauth2 é um plugin.

---

<div class="post-metadata">

### Author: ![pbouda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pbouda/32/449990_2.png) [@pbouda](https://meta.discourse.org/u/pbouda)
#### Post date: [26 Setembro , 2024 13:25 UTC](https://meta.discourse.org/t/add-scim-support-as-service-provider/328042/3 "2024-09-26T13:25:48Z")

</div>

Acho que é possível usar qualquer caminho como prefixo para os endpoints SCIM, por exemplo, `api/scim/v2/Users` ou caminhos bem conhecidos que você sugere.

Sim, entendo as preocupações com o core, então talvez um objetivo possa ser que ele se torne um plugin oficial. Obrigado também pela oferta de ajuda, não há orçamento adicional, mas vamos ver no futuro como isso se desenvolve.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [26 Setembro , 2024 13:52 UTC](https://meta.discourse.org/t/add-scim-support-as-service-provider/328042/4 "2024-09-26T13:52:27Z")

</div>

> [@pbouda](#):
>
> acho que é possível usar qualquer caminho como prefixo para os endpoints SCIM

Ah. Isso faz sentido. Eu imaginei que fosse o caso, mas não vi isso na minha leitura rápida. Eu daria uma olhada nos outros plugins de autenticação como referência.

Aqui estão os plugins oficiais com ‘auth’ no nome

```plaintext
discourse-apple-auth/ discourse-microsoft-auth/
discourse-authentication-validations/ discourse-oauth2-basic/
discourse-auth-no-email/ discourse-vk-auth/
discourse-development-auth/ discourse-wikimedia-auth/

```

Parece um projeto interessante

---

<div class="post-metadata">

### Author: ![pbouda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pbouda/32/449990_2.png) [@pbouda](https://meta.discourse.org/u/pbouda)
#### Post date: [6 Novembro , 2024 08:17 UTC](https://meta.discourse.org/t/add-scim-support-as-service-provider/328042/5 "2024-11-06T08:17:43Z")

</div>

Uma primeira versão do plugin já está disponível aqui:

> **[discourse-scim](https://forge.libre.sh/libre.sh/discourse-scim)**
>
> discourse-scim

O mapeamento ainda é muito simples, apenas os campos básicos de usuários e grupos funcionarão. Testei com o plugin SCIM do keycloak e você já pode adicionar/modificar usuários no Keycloak, que serão então criados/atualizados no Discourse. O plugin SCIM do keycloak está aqui:

> **[keycloak-scim](https://forge.libre.sh/libre.sh/keycloak-scim)**
>
> keycloak-scim

Qualquer feedback é muito bem-vindo 🙂 Testaremos mais com o keycloak em nosso ambiente e ainda quero testá-lo com o authentik.

---

<div class="post-metadata">

### Author: ![Lilly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilly/32/575047_2.png) [@Lilly](https://meta.discourse.org/u/Lilly)
#### Post date: [6 Novembro , 2024 11:31 UTC](https://meta.discourse.org/t/add-scim-support-as-service-provider/328042/6 "2024-11-06T11:31:21Z")

</div>

Isso é muito legal, ótima ideia. Mal posso esperar para testar. Obrigado!

Seria ótimo se você pudesse postar isso como um tópico na categoria #customização:plugin 🙂

---

<div class="post-metadata">

### Author: ![pbouda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pbouda/32/449990_2.png) [@pbouda](https://meta.discourse.org/u/pbouda)
#### Post date: [14 Novembro , 2024 08:13 UTC](https://meta.discourse.org/t/add-scim-support-as-service-provider/328042/7 "2024-11-14T08:13:08Z")

</div>

Na categoria Plugin, o botão de postar está desabilitado para mim e vejo a mensagem de que não tenho permissão para postar nessa categoria.

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [14 Novembro , 2024 08:16 UTC](https://meta.discourse.org/t/add-scim-support-as-service-provider/328042/8 "2024-11-14T08:16:07Z")

</div>

Junte-se ao grupo [@plugin\_authors](https://meta.discourse.org/g/plugin_authors/members). Isso permite que você crie um tópico nessa categoria.

> [@Discourse](#):
>
> Um diretório de plugins do Discourse, oficiais e de terceiros.
> 
> Para postar aqui, use o botão [Request Access](https://meta.discourse.org/groups/plugin_authors) na página do grupo **com um link** para o seu plugin.

---

<div class="post-metadata">

### Author: ![pbouda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pbouda/32/449990_2.png) [@pbouda](https://meta.discourse.org/u/pbouda)
#### Post date: [14 Novembro , 2024 08:35 UTC](https://meta.discourse.org/t/add-scim-support-as-service-provider/328042/9 "2024-11-14T08:35:54Z")

</div>

Ah, obrigado, enviei uma solicitação 🙂

---

<div class="post-metadata">

### Author: ![pbouda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pbouda/32/449990_2.png) [@pbouda](https://meta.discourse.org/u/pbouda)
#### Post date: [18 Novembro , 2024 15:18 UTC](https://meta.discourse.org/t/add-scim-support-as-service-provider/328042/10 "2024-11-18T15:18:06Z")

</div>

… e finalmente postado: [SCIM Plugin](https://meta.discourse.org/t/scim-plugin/336743)
