Como configurar o Single Sign-On (SSO) com o Keycloak no Element Web

O Element Web não se autentica diretamente no Keycloak. O Element consulta seu servidor Matrix para obter os métodos de login suportados; o servidor Matrix completa a conexão OpenID Connect (OIDC) com o Keycloak e retorna o usuário para o Element. Para uma implementação do Synapse usando seu suporte OIDC integrado, configure um cliente OIDC confidencial no Keycloak, adicione esse provedor ao Synapse e, opcionalmente, ajuste as configurações do Element Web config.jsonpara exibir ou iniciar o SSO automaticamente.

Este guia utiliza o provedor OIDC integrado do Synapse, que é um método de implementação comum. Se o seu servidor doméstico delega a autenticação ao Matrix Authentication Service (MAS), utilize a configuração de retorno de chamada e provedor do MAS descrita abaixo. Os dois URLs de retorno de chamada são diferentes. As instruções foram verificadas em relação à documentação de configuração do Element Web, ao guia OIDC do Synapse v1.144, ao guia SSO upstream atual do MAS e ao guia de administração do Keycloak 26.8.0 em 6 de outubro de 2026; o pacote de implementação e os rótulos da interface do usuário podem variar de acordo com a versão.

Primeiro, identifique qual caminho de autenticação você utiliza.

ImplantaçãoOnde o Keycloak está configuradoURL de retorno de chamada do Keycloak
OIDC integrado do SynapseSinapseoidc_providershttps://matrix.example.com/_synapse/client/oidc/callback
O Synapse delega a autorização ao MAS.MASupstream_oauth2.providershttps://auth.example.com/upstream/callback/<provider-id>

Verifique a documentação de configuração e implantação do Synapse antes de criar um cliente. O retorno de chamada deve pertencer ao componente que se comunica com o Keycloak; não registre a URL do site do Element como retorno de chamada.

Do que você precisa

  • Um URL HTTPS público para o Synapse, como https://matrix.example.com, e um emissor de realm Keycloak acessível, como https://sso.example.com/realms/company.
  • Acesso administrativo ao domínio Keycloak e à configuração e serviço do Synapse.
  • Um backup da configuração atual e uma forma de usar os logs do Synapse ou um console do servidor caso o login falhe.
  • Uma decisão sobre o provisionamento de contas: quais usuários do Keycloak podem fazer login, qual declaração os identifica e se as contas Matrix existentes devem ser mantidas.

Configure o Keycloak para o Synapse OIDC.

1. Criar um cliente OIDC confidencial

No domínio usado para contas Matrix, crie um cliente para o Synapse usando o protocolo OpenID Connect. Habilite o código de autorização ou o fluxo padrão e a autenticação do cliente para que o Synapse possa usar um segredo do cliente no endpoint do token. Defina o ID do cliente para um valor que você também usará no Synapse, por exemplo synapse.

Defina o URI de redirecionamento válido para o callback exato do Synapse:

https://matrix.example.com/_synapse/client/oidc/callback

Substitua o nome de host de exemplo pela URL base pública realmente configurada para o Synapse. Não use um curinga amplo como *em produção. O Keycloak valida URIs de redirecionamento, portanto, uma incompatibilidade de host, esquema, caminho ou barra invertida no final pode causar um erro de "URI de redirecionamento não permitida".

Salve o cliente, copie o segredo gerado e armazene-o como um segredo do lado do servidor. Mantenha-o fora do diretório público do Element Web config.json, do controle de versão, das capturas de tela e do JavaScript do lado do cliente. O console de administração do Keycloak pode rotular a autenticação ou as credenciais do cliente de forma diferente em cada versão; verifique se o cliente resultante é confidencial e pode usar o fluxo de código de autorização padrão.

2. Confirme o emissor e as reivindicações.

O emissor identifica o domínio, não a raiz do servidor Keycloak. Para este exemplo, use `<nome_do_domínio>` https://sso.example.com/realms/company. Confirme se a configuração OpenID do domínio está acessível em ` <issuer>/.well-known/openid-configuration<nome_do_domínio>` e se o emissor anunciado corresponde exatamente ao valor que você fornecerá ao Synapse.

O Synapse precisa de uma declaração de identidade estável para associar a conta do Keycloak a um usuário do Matrix. Seu provedor OIDC normalmente identifica o sujeito externo usando a declaração de sujeito OIDC; o mapeamento de nome de usuário abaixo usa preferred_usernameessa declaração como a parte local do Matrix. Certifique-se de que o Keycloak realmente retorne essa declaração e que os nomes de usuário sejam únicos e estáveis ​​de acordo com a política da sua conta. Se sua organização permite alterações de nome de usuário, escolha e teste uma estratégia de mapeamento antes da produção; uma alteração inesperada no mapeamento pode afetar a qual conta do Matrix uma pessoa é acessada.

Configurar Synapse

3. Adicione o provedor OIDC

Adicione uma entrada de provedor à configuração principal do Synapse, geralmente em `.synapse.yaml` homeserver.yaml. Mescle-a com o YAML existente em vez de substituir outras configurações. Substitua o emissor do seu domínio e o segredo do cliente real:

oidc_providers:
  - idp_id: keycloak
    idp_name: "Keycloak"
    issuer: "https://sso.example.com/realms/company"
    client_id: "synapse"
    client_secret: "REPLACE_WITH_THE_CLIENT_SECRET"
    scopes: ["openid", "profile", "email"]
    user_mapping_provider:
      config:
        localpart_template: "{{ user.preferred_username }}"
        display_name_template: "{{ user.name }}"

Os escopos solicitados controlam quais informações do usuário o Keycloak pode retornar; eles não garantem que todas as declarações sejam preenchidas. Se você não precisar importar e-mails ou nomes de exibição, reduza os escopos e o mapeamento de acordo. Mantenha o arquivo de configuração legível apenas pelo administrador do serviço e pelo processo do Synapse, conforme apropriado para sua implantação. Se você gerencia o Synapse por meio de contêineres ou um gráfico, coloque as configurações do provedor na fonte de configuração compatível, em vez de editar um arquivo gerado que será sobrescrito.

4. Opcionalmente, configure o logout por canal secundário.

Por padrão, encerrar a sessão de um serviço não encerra necessariamente a sessão do navegador de todos os outros serviços. Se você deseja que as notificações de logout do Keycloak encerrem a sessão do Synapse, habilite-as backchannel_logout_enabled: trueno provedor Keycloak no Synapse e defina o URL de logout do canal de retorno do Keycloak para:

https://matrix.example.com/_synapse/client/oidc/backchannel_logout

Isso é opcional e depende da sua política de logout e da configuração do cliente. Teste as duas direções de logout: logout do Synapse e logout do Keycloak. Não presuma que o logout do Element por si só encerre a sessão do Keycloak.

5. Reinicie e teste o Synapse.

Valide o arquivo YAML com as verificações de configuração da sua implantação e, em seguida, reinicie ou recarregue o Synapse usando o método compatível com a configuração do seu pacote ou contêiner. Analise os logs do Synapse em busca de erros de descoberta OIDC, autenticação do cliente, retorno de chamada ou mapeamento de declarações. Use uma conta de teste primeiro e confirme se o ID da Matriz e o nome de exibição correspondem aos valores esperados.

Configurar Elemento Web

6. Mantenha o SSO opcional ou redirecione automaticamente.

Assim que o Synapse anunciar o login OIDC, o Element Web poderá apresentar sua opção de login SSO. A configuração do Element sso_redirect_optionscontrola a experiência do navegador; ela não configura o Keycloak nem armazena o segredo do cliente. Adicione uma configuração como esta ao arquivo `server.xml` do Element Web config.jsonse desejar que visitantes não autenticados que chegam à página de boas-vindas ou de login sejam direcionados para o fluxo SSO disponível:

{
  "sso_redirect_options": {
    "immediate": false,
    "on_welcome_page": true,
    "on_login_page": true
  }
}

Para uma implementação que realmente exige login somente por SSO, configure "immediate": trueo SSO para ser ativado para todos os usuários não autenticados. Isso pode dificultar o acesso a senhas ou outras opções de login, portanto, teste a recuperação de senha e o acesso administrativo antes de implementá-lo. Se os usuários precisarem escolher entre o SSO e outro método, deixe o redirecionamento automático desativado e verifique se a opção SSO aparece no fluxo de login.

Se o Synapse usar o serviço de autenticação Matrix

O MAS é um serviço de autenticação separado e pode atuar como cliente OIDC para o Keycloak. Nessa arquitetura, configure o URI de redirecionamento do Keycloak como `<username>` https://auth.example.com/upstream/callback/<provider-id>, onde o ID do provedor corresponde à configuração do MAS. Configure o provedor no `<username>` do MAS upstream_oauth2.providers; o Element então usa o fluxo de autenticação baseado em MAS do servidor doméstico. Não use o `<username>` do Synapse /_synapse/client/oidc/callbackpara essa conexão upstream. O MAS requer um provedor OIDC que suporte o fluxo de código de autorização. Seu formato de configuração, ID do provedor necessário e etapas de migração são distintos do `<username>` integrado do Synapse oidc_providers.

Mal-entendidos comuns e soluções

  • "Só preciso alterar a configuração do Element." O Element controla o fluxo do navegador, enquanto o Synapse ou o MAS lidam com o OIDC. Configure primeiro o provedor correto no servidor doméstico.
  • “Um login bem-sucedido no Keycloak comprova que o mapeamento da conta está correto.” A autenticação pode ser bem-sucedida mesmo que a parte local ou a declaração de perfil selecionada esteja incorreta. Teste com um usuário que não esteja em produção e verifique o ID da Matrix resultante.
  • “O SSO desativa automaticamente senhas e cadastros.” Essas políticas são controladas pelo servidor principal e pela implantação. Analise as configurações de login e cadastro do Synapse separadamente e confirme a política aprovada.
  • “Sair do Element me desconecta de todos os lugares.” As sessões do navegador podem permanecer ativas no Keycloak. Configure e teste o logout por canal alternativo caso seja necessário o encerramento centralizado da sessão.

Lista de verificação

  • O cliente Keycloak utiliza o fluxo de código de autorização, autenticação do cliente e o retorno de chamada exato para Synapse ou MAS.
  • A URL do emissor corresponde aos metadados de descoberta do domínio, e o segredo do cliente é armazenado no servidor.
  • O Synapse ou MAS inicia sem erros de configuração OIDC e expõe o método de login pretendido.
  • Um usuário de teste pode fazer login a partir de uma nova sessão do navegador, acessa a conta Matrix esperada e consegue concluir uma sessão normal do Element.
  • O comportamento de encerramento de sessão, as contas existentes, as restrições de registo e qualquer acesso de administrador alternativo devem estar em conformidade com a sua política.

Referências oficiais

Deixar um comentário

Corrigir o alto uso de CPU no Jitsi Meet em navegadores de clientes

Corrigir o alto uso de CPU no Jitsi Meet em navegadores de clientes

Diagnostique picos de uso da CPU no navegador do Jitsi Meet e reduza a carga do cliente verificando os mosaicos de vídeo, os efeitos da câmera, os gráficos do navegador e as configurações do host.

Como monitorar as métricas do Jitsi Videobridge com Prometheus e Grafana

Como monitorar as métricas do Jitsi Videobridge com Prometheus e Grafana

Monitore a integridade, a carga da conferência e o tráfego do Jitsi Videobridge com seu endpoint Prometheus integrado e, em seguida, explore e visualize os dados em gráficos no Grafana.

Como configurar um nome de domínio personalizado para o Jitsi Meet no Docker

Como configurar um nome de domínio personalizado para o Jitsi Meet no Docker

Configure um domínio personalizado para o Jitsi Meet Docker com DNS, URL pública, HTTPS, Let's Encrypt, portas de firewall, configurações de NAT e verificação de ponta a ponta.

Corrigir erro 404 "Console de administração do Zimbra não encontrado" após a renovação do SSL.

Corrigir erro 404 "Console de administração do Zimbra não encontrado" após a renovação do SSL.

Corrija os erros 404 do Console de Administração do Zimbra após a renovação do SSL, verificando o URL e a porta corretos, o roteamento do proxy, o status do serviço, os certificados implantados e os logs.

Corrigir aviso do Nextcloud: “O cache OP do PHP não está configurado corretamente”

Corrigir aviso do Nextcloud: “O cache OP do PHP não está configurado corretamente”

Aprenda a diagnosticar e corrigir o aviso de configuração do PHP OPcache do Nextcloud, verificando o PHP SAPI ativo, os limites de tamanho, os comentários e as configurações de revalidação.

Corrigir erros de migração do banco de dados Kopano após uma atualização da versão do MySQL

Corrigir erros de migração do banco de dados Kopano após uma atualização da versão do MySQL

Solucione problemas de falhas na migração do banco de dados Kopano após uma atualização do MySQL ou MariaDB, verificando backups, versões do servidor, modos SQL, conjunto de caracteres, estado do esquema e logs.

Como configurar a autenticação LDAP e do Active Directory no Nextcloud

Como configurar a autenticação LDAP e do Active Directory no Nextcloud

Conecte o Nextcloud ao LDAP ou Active Directory com transporte seguro, filtros de usuários e grupos, atributos de login e uma implementação testada.

Corrigir notificações do Android sem os serviços do Google: Guia UnifiedPush

Corrigir notificações do Android sem os serviços do Google: Guia UnifiedPush

Corrija as notificações do Element no Android em telefones sem serviços do Google configurando o UnifiedPush, as permissões do Android, as configurações de bateria e realizando testes de verificação confiáveis.

Corrigir o aviso do Nextcloud "Banco de dados com alguns índices ausentes"

Corrigir o aviso do Nextcloud "Banco de dados com alguns índices ausentes"

Remova o aviso de índices de banco de dados ausentes do Nextcloud com o comando oficial occ. Primeiro, faça um backup, visualize as alterações, execute o reparo e verifique o resultado.

Como configurar o Single Sign-On (SSO) com o Keycloak no Element Web

Como configurar o Single Sign-On (SSO) com o Keycloak no Element Web

Configure o SSO do Keycloak para o Element Web conectando o OIDC ao Synapse, definindo a URL de retorno de chamada exata, mapeando as declarações do usuário e testando o logout.