Como já mencionado aqui, 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. 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!
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.
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.
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.
Uma primeira versão do plugin já está disponível aqui:
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:
Qualquer feedback é muito bem-vindo Testaremos mais com o keycloak em nosso ambiente e ainda quero testá-lo com o authentik.