| Resumo | Discourse OpenID Connect permite que um provedor OpenID Connect seja usado como provedor de autenticação para o Discourse. | |
| Guia de Instalação | Este plugin já vem incluído no núcleo do Discourse. Não há necessidade de instalá-lo separadamente. |
Recursos
O plugin visa fornecer uma implementação mínima da especificação. Especificamente, ele suporta o “Fluxo de Código de Autorização”. Para começar, siga as instruções de instalação do plugin ou entre em contato com seu provedor de hospedagem.
Nosso plugin oauth2-basic pode ser usado para conectar-se a alguns provedores OpenID Connect (OpenID Connect é baseado em OAuth2). No entanto, este plugin exige muito menos configuração manual e pode utilizar o “ID Token” JWT caso uma API JSON não esteja disponível.
A configuração é realizada automaticamente usando um Documento de Descoberta OpenID Connect. De acordo com a especificação, ele deve estar localizado em <domínio do emissor>/.well-known/openid-configuration, mas o Discourse suporta qualquer caminho para permitir implementações não conformes (por exemplo, Azure B2C). O documento de descoberta é armazenado em cache por 10 minutos para melhorar o desempenho em sites de alto tráfego.
Se o documento de descoberta incluir um parâmetro userinfo_endpoint, o plugin o utilizará para coletar metadados do usuário. Caso contrário, o plugin extrairá metadados do id_token (um JWT) fornecido pelo endpoint de token. O plugin NÃO verifica a autenticidade da assinatura do JWT, pois isso aumentaria significativamente a complexidade. Essa decisão é respaldada pela especificação:
Se o ID Token for recebido por comunicação direta entre o Cliente e o Endpoint de Token (como ocorre neste fluxo), a validação do servidor TLS pode ser usada para validar o emissor no lugar de verificar a assinatura do token.
Para provedores de identidade que suportam autorização sem segredo usando o “Fluxo de Código de Autorização com Chave de Prova para Troca de Código” (PKCE), o PKCE deve ser ativado e a configuração client_secret pode ser omitida.
Configuração
Opções de Configuração Básica
-
openid_connect_enabled:Ativar autenticação OpenID Connect -
openid_connect_discovery_document: URL do documento de descoberta OpenID Connect. Normalmente localizado emhttps://seu.dominio/.well-known/openid-configuration -
openid_connect_client_id: ID do cliente OpenID Connect -
openid_connect_client_secret: Segredo do cliente OpenID Connect -
openid connect rp initiated logout: Redirecionar o usuário para oend_session_endpointapós o logout. Deve ser suportado pelo seu provedor de identidade e incluído no documento de descoberta. -
openid connect rp initiated logout redirect: (opcional) Opost_logout_redirect_urique será passado para o endpoint de logout. Se fornecido, deve estar registrado no provedor de identidade. -
openid_connect_authorize_scope: Os escopos enviados para o endpoint de autorização. Deve incluir ‘openid’ -
openid_connect_use_pkce: Ativar Proof Key for Code Exchange (PKCE) para autenticação OpenID Connect. -
openid_connect_verbose_logging: Registrar informações detalhadas de autenticação openid-connect em/logs. Mantenha isso desativado durante o uso normal.
Opções de Configuração Avançada
-
openid_connect_token_scope: Os escopos enviados ao solicitar o endpoint de token. A especificação oficial não exige isso. -
openid_connect_error_redirects: Se oerror_reasondo callback contiver o primeiro parâmetro, o usuário será redirecionado para a URL no segundo parâmetro. Usado para implementações incomuns que enviam erros em resposta a entradas do usuário (por exemplo, Azure B2C) -
openid_connect_allow_association_change: Permitir que os usuários desconectem e reconectem suas contas do Discourse do provedor OpenID Connect
-
openid_connect_groups_claim: O nome da claim na resposta OIDC[1] que contém os grupos do usuário como um array de strings. Deixe em branco para desativar a sincronização de grupos. Veja Sincronização de Grupos abaixo. -
openid_connect_user_field_mappings: Mapeamentos de claims OIDC[2] que serão armazenados nos Campos de Usuário do Discourse. Os campos de usuário são identificados pelo seu ID numérico, que pode ser encontrado na URL ao editá-los pelo painel administrativo.
Sincronização de Grupos
O plugin pode sincronizar automaticamente as associações de grupos do seu provedor OpenID Connect para os grupos do Discourse. A cada login, o plugin lerá a claim configurada do token OIDC e atualizará as associações de grupos do usuário conforme necessário. Para ativar a sincronização de grupos:
-
Configure seu provedor de identidade para retornar um array de grupos em uma das claims. Isso deve ser um array de strings.
-
Defina
openid_connect_groups_claimcomo o nome da claim no token OIDC que contém os grupos do usuário (por exemplo,cognito:groups). Uma vez definido, a sincronização das informações para o sistema de “Grupos Associados” do Discourse começará. -
Encontre o Grupo do Discourse que deseja vincular. Vá em „Configurações