Hoe configureer je Single Sign-On (SSO) met Keycloak in Element Web?

Element Web authenticeert niet rechtstreeks via Keycloak. Element vraagt ​​zijn Matrix-homeserver naar ondersteunde inlogmethoden; de homeserver voltooit OpenID Connect (OIDC) met Keycloak en stuurt de gebruiker terug naar Element. Voor een Synapse-implementatie die gebruikmaakt van de ingebouwde OIDC-ondersteuning, configureert u een vertrouwelijke OIDC-client in Keycloak, voegt u die provider toe aan Synapse en past u eventueel de instellingen van Element Web aan config.jsonom SSO weer te geven of automatisch te starten.

Deze handleiding maakt gebruik van de ingebouwde OIDC-provider van Synapse, een veelgebruikte implementatiemethode. Als uw homeserver de authenticatie delegeert aan Matrix Authentication Service (MAS), gebruik dan in plaats daarvan de MAS-callback en providerconfiguratie die hieronder worden beschreven. De twee callback-URL's zijn verschillend. De instructies zijn gecontroleerd aan de hand van de configuratiedocumentatie van Element Web, de Synapse v1.144 OIDC-handleiding, de huidige MAS upstream SSO-handleiding en de Keycloak 26.8.0-beheerhandleiding op 6 oktober 2026; de implementatiepakketten en UI-labels kunnen per versie verschillen.

Identificeer eerst welk authenticatiepad u gebruikt.

InzetWaar Keycloak is geconfigureerdKeycloak callback-URL
Synapse ingebouwde OIDCSynapsoidc_providershttps://matrix.example.com/_synapse/client/oidc/callback
Synapse delegeert autorisatie aan MASMASupstream_oauth2.providershttps://auth.example.com/upstream/callback/<provider-id>

Raadpleeg de documentatie voor Synapse-configuratie en -implementatie voordat u een client aanmaakt. De callback moet behoren tot de component die met Keycloak communiceert; registreer niet de website-URL van Element als callback.

Wat je nodig hebt

  • Een openbare HTTPS-URL voor Synapse, bijvoorbeeld https://matrix.example.com, en een bereikbare Keycloak-realm-uitgever, bijvoorbeeld https://sso.example.com/realms/company.
  • Administratieve toegang tot het Keycloak-domein en de Synapse-configuratie en -service.
  • Een back-up van de huidige configuratie en een manier om Synapse-logboeken of een serverconsole te gebruiken als het aanmelden mislukt.
  • Een beslissing over accountprovisionering: welke Keycloak-gebruikers mogen inloggen, welke claim hen identificeert en of bestaande Matrix-accounts behouden moeten blijven.

Keycloak configureren voor Synapse OIDC

1. Maak een vertrouwelijke OIDC-client aan.

Maak in het domein dat voor Matrix-accounts wordt gebruikt een client voor Synapse aan met behulp van het OpenID Connect-protocol. Schakel de autorisatiecode of standaardflow en clientauthenticatie in, zodat Synapse een clientgeheim kan gebruiken bij het token-eindpunt. Stel de client-ID in op een waarde die u ook in Synapse zult gebruiken, bijvoorbeeld synapse.

Stel de geldige omleidings-URI in op de exacte Synapse-callback:

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

Vervang de voorbeeldhostnaam door de openbare basis-URL die daadwerkelijk voor Synapse is geconfigureerd. Gebruik geen brede wildcard zoals *in een productieomgeving. Keycloak valideert redirect-URI's, dus een mismatch in host, schema, pad of afsluitende slash kan een foutmelding "redirect-URI is not allowed" veroorzaken.

Sla de client op, kopieer het gegenereerde geheim en bewaar dit als een servergeheim. Houd het buiten het openbare bestand van Element Web config.json, versiebeheer, screenshots en client-side JavaScript. De Keycloak-beheerconsole kan clientauthenticatie of -gegevens in verschillende versies anders labelen; controleer of de resulterende client vertrouwelijk is en de standaard autorisatiecodeflow kan gebruiken.

2. Bevestig de uitgever en de vorderingen

De uitgever identificeert het domein, niet de root van de Keycloak-server. Gebruik in dit voorbeeld https://sso.example.com/realms/company. Controleer of de OpenID-configuratie van het domein bereikbaar is op <issuer>/.well-known/openid-configurationen of de geadverteerde uitgever exact overeenkomt met de waarde die u aan Synapse zult doorgeven.

Synapse heeft een stabiele identiteitsclaim nodig om het Keycloak-account aan een Matrix-gebruiker te koppelen. De OIDC-provider identificeert het externe subject normaal gesproken met behulp van de OIDC-subjectclaim; de onderstaande gebruikersnaamtoewijzing gebruikt preferred_usernameals Matrix localpart. Zorg ervoor dat Keycloak daadwerkelijk die claim retourneert en dat gebruikersnamen uniek en stabiel zijn volgens uw accountbeleid. Als uw organisatie wijzigingen in gebruikersnamen toestaat, kies en test dan een toewijzingsstrategie vóór de implementatie; een onverwachte wijziging in de toewijzing kan van invloed zijn op welk Matrix-account een persoon bereikt.

Synapse configureren

3. Voeg de OIDC-provider toe.

Voeg een providervermelding toe aan de hoofdconfiguratie van Synapse, meestal homeserver.yaml. Voeg deze samen met de bestaande YAML in plaats van andere instellingen te vervangen. Vervang uw realm-uitgever en het echte clientgeheim:

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 }}"

De gevraagde scopes bepalen welke gebruikersinformatie Keycloak mag retourneren; ze garanderen niet dat elke claim wordt ingevuld. Als u geen e-mail- of weergavenaamimport nodig hebt, verklein dan de scopes en de bijbehorende mapping. Zorg ervoor dat het configuratiebestand alleen leesbaar is voor de servicebeheerder en het Synapse-proces, afhankelijk van uw implementatie. Als u Synapse beheert via containers of een chart, plaats de providerinstellingen dan in de ondersteunde configuratiebron in plaats van een gegenereerd bestand te bewerken dat toch wordt overschreven.

4. Configureer optioneel de back-channel logout.

Standaard wordt bij het uitloggen uit één service niet automatisch de browsersessie van alle andere services beëindigd. Als u wilt dat Keycloak-uitlogmeldingen de Synapse-sessie beëindigen, schakelt u dit in backchannel_logout_enabled: trueonder de Keycloak-provider in Synapse en stelt u de Backchannel Logout URL van Keycloak in op:

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

Dit is optioneel en hangt af van uw uitlogbeleid en clientinstellingen. Test beide uitlogrichtingen: uitloggen bij Synapse en uitloggen bij Keycloak. Ga er niet van uit dat uitloggen bij Element alleen de Keycloak-sessie beëindigt.

5. Herstart en test Synapse

Valideer het YAML-bestand met de configuratiecontroles van uw implementatie en herstart of herlaad Synapse vervolgens met behulp van de methode die wordt ondersteund door uw pakket- of containerconfiguratie. Controleer de Synapse-logboeken op fouten met betrekking tot OIDC-detectie, clientauthenticatie, callbacks of claimtoewijzing. Gebruik eerst een testaccount en controleer of de Matrix ID en weergavenaam de verwachte waarden hebben.

Element Web configureren

6. Houd SSO optioneel of verwijs automatisch door.

Zodra Synapse OIDC-aanmelding ondersteunt, kan Element Web de SSO-aanmeldingsoptie presenteren. sso_redirect_optionsDe instellingen van Element bepalen de gebruikerservaring; ze configureren Keycloak niet en slaan het clientgeheim niet op. Voeg een instelling zoals deze toe aan de `served`-configuratie van Element Web config.jsonals u wilt dat niet-geauthenticeerde bezoekers die op de welkomst- of inlogpagina terechtkomen, worden doorverwezen naar de beschikbare SSO-flow:

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

Voor een implementatie die echt alleen SSO-aanmelding vereist, stelt u in "immediate": truedat SSO wordt gestart voor alle niet-geauthenticeerde gebruikers. Dit kan het lastiger maken om toegang te krijgen tot wachtwoorden of andere inlogopties, dus test herstel en beheerdersrechten voordat u dit afdwingt. Als gebruikers moeten kunnen kiezen tussen SSO en een andere methode, laat u automatische omleiding uitgeschakeld en controleert u of de SSO-optie in het inlogproces verschijnt.

Als Synapse gebruikmaakt van de Matrix Authentication Service.

MAS is een aparte authenticatieservice en kan fungeren als OIDC-client voor Keycloak. Configureer in die architectuur de redirect-URI van Keycloak als https://auth.example.com/upstream/callback/<provider-id>, waarbij de provider-ID overeenkomt met de MAS-configuratie. Configureer de provider onder MAS's upstream_oauth2.providers; Het element gebruikt vervolgens de op MAS gebaseerde authenticatiestroom van de homeserver. Gebruik Synapse's niet /_synapse/client/oidc/callbackvoor deze upstream-verbinding. MAS vereist een OIDC-provider die de autorisatiecodestroom ondersteunt. Het configuratieformaat, de vereiste provider-ID en de migratiestappen verschillen van Synapse's ingebouwde oidc_providers.

Veelvoorkomende misverstanden en oplossingen

  • “Ik hoef alleen de configuratie van Element aan te passen.” Element regelt de browserflow, terwijl Synapse of MAS de OIDC-communicatie afhandelt. Configureer eerst de juiste provider aan de serverzijde.
  • "Een succesvolle Keycloak-login bewijst dat de accounttoewijzing correct is." Authenticatie kan slagen, zelfs als de verkeerde localpart of profielclaim is geselecteerd. Test met een niet-productiegebruiker en controleer de resulterende Matrix ID.
  • "SSO schakelt wachtwoorden en registratie automatisch uit." Deze beleidsregels worden beheerd door de homeserver en de implementatie. Controleer de inlog- en registratie-instellingen van Synapse afzonderlijk en bevestig het goedgekeurde beleid.
  • “Als ik uitlog bij Element, word ik overal uitgelogd.” Browsersessies kunnen actief blijven bij Keycloak. Configureer en test de back-channel logout als centrale sessiebeëindiging vereist is.

Controlelijst voor verificatie

  • De Keycloak-client maakt gebruik van de autorisatiecodeflow, clientauthenticatie en de exacte callback voor Synapse of MAS.
  • De URL van de uitgever komt overeen met de ontdekkingsmetadata van het domein, en het clientgeheim wordt aan de serverzijde opgeslagen.
  • Synapse of MAS start zonder OIDC-configuratiefouten en toont de beoogde inlogmethode.
  • Een testgebruiker kan inloggen vanuit een nieuwe browsersessie, komt terecht in het verwachte Matrix-account en kan een normale Element-sessie voltooien.
  • Het uitloggedrag, bestaande accounts, registratiebeperkingen en eventuele alternatieve beheerdersrechten moeten overeenkomen met uw beleid.

Officiële referenties

Laat een reactie achter

Het probleem met het hoge CPU-gebruik in Jitsi Meet op clientbrowsers oplossen.

Het probleem met het hoge CPU-gebruik in Jitsi Meet op clientbrowsers oplossen.

Diagnoseer pieken in het CPU-gebruik van de Jitsi Meet-browser en verlaag de belasting van de client door videotegels, camera-effecten, browsergraphics en hostinstellingen te controleren.

Hoe je Jitsi Videobridge-statistieken kunt monitoren met Prometheus en Grafana

Hoe je Jitsi Videobridge-statistieken kunt monitoren met Prometheus en Grafana

Monitor de status van Jitsi Videobridge, de belasting van conferenties en het verkeer met het ingebouwde Prometheus-eindpunt, en analyseer en visualiseer de gegevens vervolgens in Grafana.

Hoe configureer je een aangepaste domeinnaam voor Jitsi Meet Docker?

Hoe configureer je een aangepaste domeinnaam voor Jitsi Meet Docker?

Configureer een aangepast domein voor Jitsi Meet Docker met DNS, PUBLIC_URL, HTTPS, Let's Encrypt, firewallpoorten, NAT-instellingen en end-to-end verificatie.

Oplossing voor de 404-fout 'Zimbra Admin Console niet gevonden' na SSL-vernieuwing.

Oplossing voor de 404-fout 'Zimbra Admin Console niet gevonden' na SSL-vernieuwing.

Los 404-fouten in de Zimbra Admin Console op na het vernieuwen van een SSL-certificaat door de juiste URL en poort, proxy-routering, servicestatus, geïmplementeerde certificaten en logbestanden te controleren.

Los de Nextcloud-waarschuwing "De PHP OPcache is niet correct geconfigureerd" op.

Los de Nextcloud-waarschuwing "De PHP OPcache is niet correct geconfigureerd" op.

Leer hoe u de PHP OPcache-configuratiewaarschuwing van Nextcloud kunt diagnosticeren en oplossen door de actieve PHP SAPI, groottelimieten, opmerkingen en hervalidatie-instellingen te controleren.

Corrigeer migratiefouten in de Kopano-database na een MySQL-versie-upgrade.

Corrigeer migratiefouten in de Kopano-database na een MySQL-versie-upgrade.

Los problemen met Kopano-databasemigraties na een MySQL- of MariaDB-upgrade op door back-ups, serverversies, SQL-modi, tekenset, schemastatus en logbestanden te controleren.

Hoe configureer je LDAP- en Active Directory-authenticatie in Nextcloud?

Hoe configureer je LDAP- en Active Directory-authenticatie in Nextcloud?

Verbind Nextcloud met LDAP of Active Directory via beveiligd transport, gebruikers- en groepsfilters, inlogkenmerken en een geteste uitrolprocedure.

Element Android-meldingen repareren zonder Google-services: UnifiedPush-handleiding

Element Android-meldingen repareren zonder Google-services: UnifiedPush-handleiding

Los problemen met Element Android-meldingen op telefoons zonder Google op door UnifiedPush, Android-machtigingen, batterij-instellingen en betrouwbare verificatietests te configureren.

Los de Nextcloud-waarschuwing "Database mist enkele indexen" op.

Los de Nextcloud-waarschuwing "Database mist enkele indexen" op.

Verwijder de waarschuwing van Nextcloud over ontbrekende database-indexen met het officiële occ-commando. Maak eerst een back-up, bekijk de wijzigingen, voer de reparatie uit en controleer het resultaat.

Hoe configureer je Single Sign-On (SSO) met Keycloak in Element Web?

Hoe configureer je Single Sign-On (SSO) met Keycloak in Element Web?

Configureer Keycloak SSO voor Element Web door OIDC met Synapse te verbinden, de exacte callback-URL in te stellen, gebruikersclaims te koppelen en het uitloggen te testen.