Jak skonfigurować logowanie jednokrotne (SSO) za pomocą Keycloak w Element Web

Element Web nie uwierzytelnia się bezpośrednio w Keycloak. Element pyta swój serwer domowy Matrix o obsługiwane metody logowania; serwer domowy nawiązuje połączenie OpenID Connect (OIDC) z Keycloak i odsyła użytkownika do Element. W przypadku wdrożenia Synapse z wbudowaną obsługą OIDC, należy skonfigurować poufnego klienta OIDC w Keycloak, dodać tego dostawcę do Synapse i opcjonalnie dostosować ustawienia Element Web, config.jsonaby wyświetlały lub automatycznie uruchamiały logowanie jednokrotne.

W tym przewodniku wykorzystano wbudowanego dostawcę OIDC Synapse, który jest powszechną ścieżką wdrażania. Jeśli serwer domowy deleguje uwierzytelnianie do usługi Matrix Authentication Service (MAS), należy zamiast tego użyć konfiguracji wywołania zwrotnego MAS i dostawcy opisanej poniżej. Te dwa adresy URL wywołania zwrotnego różnią się. Instrukcje zostały sprawdzone pod kątem dokumentacji konfiguracji Element Web, przewodnika OIDC Synapse v1.144, aktualnego przewodnika MAS upstream SSO oraz przewodnika administracyjnego Keycloak 26.8.0 z 6 października 2026 r.; pakiety wdrożeniowe i etykiety interfejsu użytkownika mogą się różnić w zależności od wersji.

Najpierw zidentyfikuj ścieżkę uwierzytelniania, której używasz

ZastosowanieGdzie skonfigurowano KeycloakAdres URL wywołania zwrotnego Keycloak
Wbudowany OIDC SynapseSynapsaoidc_providershttps://matrix.example.com/_synapse/client/oidc/callback
Synapse deleguje autoryzację do MASMASupstream_oauth2.providershttps://auth.example.com/upstream/callback/<provider-id>

Przed utworzeniem klienta sprawdź dokumentację konfiguracji i wdrożenia Synapse. Wywołanie zwrotne musi należeć do komponentu, który komunikuje się z Keycloak; nie rejestruj adresu URL witryny Element jako wywołania zwrotnego.

Czego potrzebujesz

  • Publiczny adres URL HTTPS dla usługi Synapse, taki jak https://matrix.example.com, oraz dostępny wystawca domeny Keycloak, taki jak https://sso.example.com/realms/company.
  • Dostęp administracyjny do domeny Keycloak oraz konfiguracji i usługi Synapse.
  • Kopia zapasowa bieżącej konfiguracji i sposób na wykorzystanie dzienników Synapse lub konsoli serwera w przypadku niepowodzenia logowania.
  • Decyzja dotycząca tworzenia kont: którzy użytkownicy Keycloak mogą się logować, które roszczenie ich identyfikuje i czy istniejące konta Matrix muszą zostać zachowane.

Skonfiguruj Keycloak dla Synapse OIDC

1. Utwórz poufnego klienta OIDC

W domenie używanej dla kont Matrix utwórz klienta dla Synapse, używając protokołu OpenID Connect. Włącz kod autoryzacji lub standardowy przepływ i uwierzytelnianie klienta, aby Synapse mógł używać tajnego klucza klienta w punkcie końcowym tokena. Ustaw identyfikator klienta na wartość, której będziesz używać również w Synapse, na przykład synapse.

Ustaw prawidłowy adres URI przekierowania na dokładne wywołanie zwrotne Synapse:

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

Zastąp przykładową nazwę hosta publicznym adresem URL bazowym, który jest faktycznie skonfigurowany dla Synapse. Nie używaj szerokiego symbolu wieloznacznego, takiego jak *w środowisku produkcyjnym. Keycloak weryfikuje adresy URI przekierowań, więc niezgodność hosta, schematu, ścieżki lub ukośnika może spowodować błąd „adres URI przekierowania jest niedozwolony”.

Zapisz klienta, skopiuj wygenerowany klucz tajny i przechowuj go jako klucz tajny po stronie serwera. Nie udostępniaj go publicznie config.json, w systemie kontroli źródła, zrzutach ekranu ani w kodzie JavaScript po stronie klienta w Element Web. Konsola administracyjna Keycloak może oznaczać uwierzytelnianie klienta lub dane uwierzytelniające inaczej w różnych wersjach; sprawdź, czy wygenerowany klient jest poufny i może korzystać ze standardowego przepływu kodu autoryzacyjnego.

2. Potwierdź wystawcę i roszczenia

Wystawca identyfikuje domenę, a nie katalog główny serwera Keycloak. W tym przykładzie użyj https://sso.example.com/realms/company. Sprawdź, czy konfiguracja OpenID domeny jest dostępna pod adresem <issuer>/.well-known/openid-configurationi czy jej reklamowany wystawca dokładnie odpowiada wartości, którą podasz Synapse.

Synapse potrzebuje stabilnego oświadczenia tożsamości, aby powiązać konto Keycloak z użytkownikiem Matrix. Dostawca OIDC zazwyczaj identyfikuje podmiot zewnętrzny za pomocą oświadczenia podmiotu OIDC; mapowanie nazwy użytkownika poniżej wykorzystuje preferred_usernamelokalną część Matrix. Upewnij się, że Keycloak faktycznie zwraca to oświadczenie i że nazwy użytkowników są unikalne i stabilne zgodnie z polityką Twojego konta. Jeśli Twoja organizacja zezwala na zmiany nazw użytkowników, wybierz i przetestuj strategię mapowania przed rozpoczęciem produkcji; nieoczekiwana zmiana w mapowaniu może wpłynąć na to, do którego konta Matrix uzyska dostęp dana osoba.

Konfiguruj Synapse

3. Dodaj dostawcę OIDC

Dodaj wpis dostawcy do głównej konfiguracji Synapse, zazwyczaj homeserver.yaml. Scal go z istniejącym plikiem YAML zamiast zastępować inne ustawienia. Zastąp wystawcę domeny i prawdziwy klucz tajny klienta:

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

Żądane zakresy kontrolują, jakie informacje o użytkowniku może zwrócić Keycloak; nie gwarantują one, że każde zgłoszenie zostanie wypełnione. Jeśli nie potrzebujesz importu adresu e-mail ani nazwy wyświetlanej, odpowiednio zmniejsz zakresy i mapowanie. Plik konfiguracyjny powinien być dostępny do odczytu tylko dla administratora usługi i procesu Synapse, stosownie do potrzeb wdrożenia. Jeśli zarządzasz Synapse za pomocą kontenerów lub diagramu, umieść ustawienia dostawcy w obsługiwanym źródle konfiguracji, zamiast edytować wygenerowany plik, który zostanie nadpisany.

4. Opcjonalnie skonfiguruj wylogowanie z kanału tylnego

Domyślnie wylogowanie z jednej usługi nie musi kończyć sesji przeglądarki w pozostałych usługach. Jeśli chcesz, aby powiadomienia o wylogowaniu Keycloak kończyły sesję Synapse, włącz tę opcję backchannel_logout_enabled: truew dostawcy Keycloak w Synapse i ustaw adres URL wylogowania Backchannel Keycloak na:

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

Jest to opcjonalne i zależy od polityki wylogowywania oraz konfiguracji klienta. Przetestuj oba kierunki wylogowania: wylogowanie z Synapse i wylogowanie z Keycloak. Nie zakładaj, że samo wylogowanie z Element zakończy sesję Keycloak.

5. Uruchom ponownie i przetestuj Synapse

Sprawdź plik YAML za pomocą kontroli konfiguracji wdrożenia, a następnie uruchom ponownie lub przeładuj Synapse, używając metody obsługiwanej przez konfigurację pakietu lub kontenera. Przejrzyj logi Synapse pod kątem błędów wykrywania OIDC, uwierzytelniania klienta, wywołania zwrotnego lub mapowania roszczeń. Najpierw użyj konta testowego i upewnij się, że jego identyfikator macierzy i nazwa wyświetlana są wartościami oczekiwanymi.

Konfiguruj Element Web

6. Zachowaj opcję SSO lub przekieruj automatycznie

Gdy Synapse ogłosi logowanie OIDC, Element Web może udostępnić opcję logowania jednokrotnego (SSO). Ustawienie Element Web sso_redirect_optionskontroluje działanie przeglądarki; nie konfiguruje Keycloak ani nie przechowuje tajnego klucza klienta. Dodaj takie ustawienie do obsługiwanych ustawień Element Web, config.jsonjeśli chcesz, aby nieuwierzytelnieni użytkownicy odwiedzający stronę powitalną lub stronę logowania byli kierowani do dostępnego przepływu logowania jednokrotnego (SSO):

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

W przypadku wdrożenia, które faktycznie wymaga logowania tylko za pomocą logowania jednokrotnego (SSO), należy skonfigurować "immediate": trueuruchamianie logowania jednokrotnego (SSO) dla wszystkich nieuwierzytelnionych użytkowników. Może to utrudnić dostęp do hasła lub innych opcji logowania, dlatego przed wymuszeniem tej opcji należy przetestować odzyskiwanie i dostęp administratora. Jeśli użytkownicy muszą wybierać między logowaniem jednokrotnym (SSO) a inną metodą, należy wyłączyć automatyczne przekierowywanie i sprawdzić, czy opcja logowania jednokrotnego (SSO) pojawia się w procesie logowania.

Jeśli Synapse używa usługi uwierzytelniania Matrix

MAS to oddzielna usługa uwierzytelniania, która może działać jako klient OIDC dla Keycloak. W tej architekturze należy skonfigurować adres URI przekierowania Keycloak jako https://auth.example.com/upstream/callback/<provider-id>, gdzie identyfikator dostawcy jest zgodny z konfiguracją MAS. Skonfiguruj dostawcę w MAS upstream_oauth2.providers; element następnie używa przepływu uwierzytelniania opartego na MAS serwera domowego. Nie należy używać Synapse /_synapse/client/oidc/callbackdo tego połączenia nadrzędnego. MAS wymaga dostawcy OIDC obsługującego przepływ kodu autoryzacji. Format konfiguracji, wymagany identyfikator dostawcy i kroki migracji różnią się od wbudowanego w Synapse oidc_providers.

Typowe nieporozumienia i sposoby ich rozwiązania

  • „Muszę tylko zmienić konfigurację Elementu”. Element kontroluje przepływ przeglądarki, a Synapse lub MAS obsługuje OIDC. Najpierw skonfiguruj odpowiedniego dostawcę po stronie serwera domowego.
  • „Pomyślne logowanie do Keycloak dowodzi poprawności mapowania konta”. Uwierzytelnianie może się powieść, nawet jeśli wybrano nieprawidłową część lokalną lub deklarację profilu. Przetestuj z użytkownikiem spoza środowiska produkcyjnego i zweryfikuj otrzymany identyfikator Matrix.
  • „SSO automatycznie wyłącza hasła i rejestrację”. Zasady te są kontrolowane przez serwer domowy i wdrożenie. Sprawdź osobno ustawienia logowania i rejestracji w Synapse i potwierdź zatwierdzoną zasadę.
  • „Wylogowanie z Elementu powoduje wylogowanie ze wszystkich stron”. Sesje przeglądarki mogą pozostać aktywne w Keycloak. Skonfiguruj i przetestuj wylogowanie z kanału zwrotnego, jeśli wymagane jest scentralizowane zamykanie sesji.

Lista kontrolna weryfikacji

  • Klient Keycloak wykorzystuje przepływ kodu autoryzacji, uwierzytelnianie klienta i dokładne wywołanie zwrotne dla Synapse lub MAS.
  • Adres URL wystawcy jest zgodny z metadanymi wykrywania domeny, a tajny klucz klienta jest przechowywany po stronie serwera.
  • Synapse lub MAS uruchamia się bez błędów konfiguracji OIDC i ujawnia zamierzoną metodę logowania.
  • Użytkownik testowy może zalogować się z nowej sesji przeglądarki, przejść na oczekiwane konto Matrix i ukończyć normalną sesję Element.
  • Zachowanie po wylogowaniu, istniejące konta, ograniczenia rejestracji i ewentualny zapasowy dostęp administratora są zgodne z Twoją polityką.

Oficjalne referencje

Zostaw komentarz

10 najlepszych narzędzi do pingowania w celu znajdowania urządzeń w sieci

10 najlepszych narzędzi do pingowania w celu znajdowania urządzeń w sieci

Porównaj 10 narzędzi do pingowania, które umożliwiają szybkie wykrywanie sieci LAN, skanowanie międzyplatformowe i zarządzanie adresami IP. Dowiedz się, co narzędzie pingujące może Ci powiedzieć, a czego nie.

6 najlepszych narzędzi do zarządzania siecią, umożliwiających śledzenie wydajności

6 najlepszych narzędzi do zarządzania siecią, umożliwiających śledzenie wydajności

Porównaj sześć narzędzi do zarządzania siecią służących do monitorowania wydajności, obejmujących zasięg SNMP, mapowanie, alerty, modele wdrażania i kompromisy kosztów.

Ping Monitor: 7 darmowych i otwartych narzędzi do monitorowania dostępności sieci

Ping Monitor: 7 darmowych i otwartych narzędzi do monitorowania dostępności sieci

Porównaj siedem darmowych i otwartych monitorów pingów — od kompletnych pakietów sieciowych po ukierunkowane sondy opóźnień — i wybierz odpowiedni monitor pod kątem dostępności, utraty pakietów i historii.

QoS w sieciach: czym jest jakość usług i jak działa

QoS w sieciach: czym jest jakość usług i jak działa

Dowiedz się, co oznacza QoS w sieciach, w jaki sposób oznaczenia DSCP i kolejki ruchu nadają priorytet aplikacjom głosowym, wideo i biznesowym oraz czego QoS nie jest w stanie naprawić.

Najlepsze oprogramowanie serwera SFTP do bezpiecznego przesyłania plików

Najlepsze oprogramowanie serwera SFTP do bezpiecznego przesyłania plików

Porównaj niezawodne oprogramowanie serwera SFTP dla systemów Windows i Linux, w tym OpenSSH, Bitvise, SolarWinds i SFTPGo. Znajdź rozwiązanie odpowiednie dla swoich potrzeb w zakresie bezpieczeństwa i transferu plików.

7 najlepszych narzędzi do zarządzania adresami IP dla zespołów sieciowych

7 najlepszych narzędzi do zarządzania adresami IP dla zespołów sieciowych

Porównaj siedem narzędzi do zarządzania adresami IP służących do wykrywania podsieci, koordynacji DNS i DHCP, inwentaryzacji sieci i otwartego oprogramowania IPAM.

6 najlepszych narzędzi do monitorowania serwerów Windows Server zapewniających lepszą dostępność i wydajność

6 najlepszych narzędzi do monitorowania serwerów Windows Server zapewniających lepszą dostępność i wydajność

Porównaj sześć narzędzi do monitorowania systemu Windows Server pod kątem zbierania danych systemu Windows, widoczności aplikacji, modelu wdrażania i licencjonowania, aby znaleźć odpowiednie rozwiązanie.

10 najlepszych narzędzi do skanowania sieci w celu wykrywania urządzeń i adresów IP

10 najlepszych narzędzi do skanowania sieci w celu wykrywania urządzeń i adresów IP

Porównaj narzędzia do skanowania sieciowego umożliwiające szybkie wykrywanie urządzeń, skanowanie adresów IP na wielu platformach oraz zarządzanie IPAM w przedsiębiorstwie. Znajdziesz tu wskazówki dotyczące dopasowania każdej opcji do swojej sieci.

Najlepsze praktyki monitorowania sieci: co śledzić i jakich narzędzi używać

Najlepsze praktyki monitorowania sieci: co śledzić i jakich narzędzi używać

Zbuduj praktyczny monitoring sieci z przejrzystym zakresem urządzeń, przydatnymi wskaźnikami wydajności, przydatnymi alertami oraz porównaniem SolarWinds NPM, PRTG i OpManager.

Jak używać Nmap do śledzenia trasy i odczytywania ścieżki sieciowej

Jak używać Nmap do śledzenia trasy i odczytywania ścieżki sieciowej

Użyj opcji --traceroute programu Nmap, aby mapować przeskoki do autoryzowanego hosta, zrozumieć dane wyjściowe dotyczące przeskoków i czasu RTT oraz rozwiązywać problemy z brakującymi odpowiedziami bez nadmiernego skanowania.