Respondendo à pergunta na publicação nº 2 acima: nosso caso de uso e quais fontes de login precisamos.
Operamos um fórum de comunidade público para uma iniciativa de pesquisa da UE, em hospedagem gerenciada do Discourse dentro da UE.
Precisamos que dois provedores OIDC estejam habilitados simultaneamente:
- EU Login, o provedor de identidade da Comissão Europeia. É utilizado por funcionários da Comissão, partes interessadas em políticas públicas e participantes de projetos financiados pela UE. É OIDC padrão, com seu documento de descoberta em
https://ecas.ec.europa.eu/cas/oauth2/.well-known/openid-configuration. - EGI Check-in, um proxy de identidade acadêmica federada que atua como front para contas institucionais e ORCID. É utilizado em toda a infraestrutura de pesquisa europeia. Também é OIDC padrão.
Nenhum dos dois cobre os usuários do outro. Um oficial de políticas faz login com o EU Login e não possui uma identidade de pesquisa institucional. Um pesquisador faz login com uma conta universitária ou com ORCID através do nosso proxy e não possui EU Login. Nossa comunidade é composta por ambos os grupos, portanto, escolher um único provedor significa afastar metade das pessoas para quem o fórum foi criado.
Ambos os provedores utilizam OIDC comum, e qualquer um deles funciona isoladamente. O que nos impede é que o discourse-openid-connect expõe um único namespace de configurações sem numeração: openid_connect_client_id, em vez de openid_connect_1_client_id e openid_connect_2_client_id. Apenas um provedor OIDC pode ser configurado por site.
Gostaríamos de suporte para mais de um provedor. A forma mais natural seria um namespace de configurações por provedor, seja por configurações numeradas ou por uma lista gerenciada pelo administrador, onde cada provedor tenha seu próprio documento de descoberta, credenciais de cliente, escopo e título do botão.
Há trabalho anterior em Multiple openid-connect authentication providers, de 2021, onde a necessidade era de vários reinos Keycloak. Essa é a mesma limitação em uma forma diferente.
Podemos fornecer mais informações, se necessário, ou testar implementações, se isso puder ajudar.