Element Web에서 Keycloak을 사용하여 싱글 사인온(SSO)을 구성하는 방법
OIDC를 Synapse에 연결하고, 정확한 콜백 URL을 설정하고, 사용자 클레임을 매핑하고, 로그아웃을 테스트하여 Element Web용 Keycloak SSO를 구성하십시오.
Element Web은 Keycloak에 대해 직접 인증하지 않습니다. Element는 Matrix 홈서버에 지원되는 로그인 방법을 요청하고, 홈서버는 Keycloak과 함께 OpenID Connect(OIDC) 인증을 완료한 후 사용자를 Element로 반환합니다. Synapse의 내장 OIDC 지원 기능을 사용하는 경우, Keycloak에서 기밀 OIDC 클라이언트를 구성하고 해당 공급자를 Synapse에 추가한 다음, Element Web에서 config.jsonSSO를 표시하거나 자동으로 시작하도록 설정을 조정할 수 있습니다.
이 가이드에서는 일반적인 배포 경로인 Synapse의 내장 OIDC 공급자를 사용합니다. 홈서버에서 Matrix Authentication Service(MAS)로 인증을 위임하는 경우, 아래 설명된 MAS 콜백 및 공급자 구성을 사용하십시오. 두 콜백 URL은 서로 다릅니다. 본 지침은 2026년 10월 6일에 Element Web 구성 문서, Synapse v1.144 OIDC 가이드, 최신 MAS 업스트림 SSO 가이드 및 Keycloak 26.8.0 관리 가이드를 기준으로 검토되었습니다. 배포 패키징 및 UI 레이블은 버전에 따라 다를 수 있습니다.
| 전개 | Keycloak이 구성된 위치 | Keycloak 콜백 URL |
|---|---|---|
| Synapse 내장 OIDC | 시냅스oidc_providers | https://matrix.example.com/_synapse/client/oidc/callback |
| Synapse는 MAS에 인증을 위임합니다. | 마스upstream_oauth2.providers | https://auth.example.com/upstream/callback/<provider-id> |
클라이언트를 생성하기 전에 Synapse 구성 및 배포 문서를 확인하십시오. 콜백은 Keycloak과 통신하는 구성 요소에 속해야 하며, Element의 웹사이트 URL을 콜백으로 등록하지 마십시오.
https://matrix.example.com)과 연결 가능한 Keycloak 영역 발급자(예: )입니다 https://sso.example.com/realms/company.Matrix 계정에 사용되는 영역에서 OpenID Connect 프로토콜을 사용하여 Synapse용 클라이언트를 생성합니다. Synapse에서 토큰 엔드포인트에 클라이언트 암호를 사용할 수 있도록 인증 코드 또는 표준 흐름 및 클라이언트 인증을 활성화합니다. 클라이언트 ID는 Synapse에서도 사용할 값으로 설정합니다(예: ) synapse.
유효한 리디렉션 URI를 정확한 Synapse 콜백으로 설정하십시오.
https://matrix.example.com/_synapse/client/oidc/callback
예시 호스트 이름을 Synapse에 실제로 구성된 공개 기본 URL로 바꾸십시오. *프로덕션 환경에서처럼 광범위한 와일드카드를 사용하지 마십시오. Keycloak은 리디렉션 URI를 검증하므로 호스트, 스키마, 경로 또는 후행 슬래시가 일치하지 않으면 "리디렉션 URI가 허용되지 않습니다" 오류가 발생할 수 있습니다.
클라이언트를 저장하고 생성된 비밀 키를 복사하여 서버 측 비밀 키로 저장하십시오. Element Web의 공개 저장소 config.json, 소스 코드 관리 시스템, 스크린샷 및 클라이언트 측 JavaScript에 해당 비밀 키를 노출하지 마십시오. Keycloak 관리 콘솔은 릴리스 버전에 따라 클라이언트 인증 또는 자격 증명에 대한 명칭이 다를 수 있으므로, 생성된 클라이언트가 기밀성을 유지하고 표준 인증 코드 흐름을 사용할 수 있는지 확인하십시오.
발급자는 Keycloak 서버 루트가 아닌 영역을 식별합니다. 이 예에서는 를 사용합니다 https://sso.example.com/realms/company. 영역의 OpenID 구성에 에서 접근할 수 있는지 <issuer>/.well-known/openid-configuration, 그리고 광고된 발급자가 Synapse에 지정할 값과 정확히 일치하는지 확인하십시오.
Synapse는 Keycloak 계정을 Matrix 사용자와 연결하기 위해 안정적인 ID 클레임이 필요합니다. Synapse의 OIDC 공급자는 일반적으로 OIDC 주체 클레임을 사용하여 외부 주체를 식별합니다. 아래의 사용자 이름 매핑은 preferred_usernameMatrix 로컬 파트로 이 클레임을 사용합니다. Keycloak이 해당 클레임을 실제로 반환하는지, 그리고 사용자 이름이 계정 정책에 따라 고유하고 안정적인지 확인하십시오. 조직에서 사용자 이름 변경을 허용하는 경우, 프로덕션 환경 구축 전에 매핑 전략을 선택하고 테스트하십시오. 예기치 않은 매핑 변경은 사용자가 어떤 Matrix 계정에 접속하는지에 영향을 줄 수 있습니다.
Synapse의 기본 구성(일반적으로 `<Provider>`)에 공급자 항목을 추가합니다 homeserver.yaml. 다른 설정을 덮어쓰지 말고 기존 YAML 파일과 병합합니다. 영역 발급자와 실제 클라이언트 암호를 바꿔 입력하세요.
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 }}"
요청된 범위는 Keycloak이 반환할 수 있는 사용자 정보를 제어하며, 모든 클레임이 채워진다는 것을 보장하지는 않습니다. 이메일이나 표시 이름 가져오기가 필요하지 않은 경우 범위와 매핑을 그에 맞게 줄이십시오. 구성 파일은 배포 환경에 따라 서비스 관리자와 Synapse 프로세스만 읽을 수 있도록 설정하십시오. 컨테이너 또는 차트를 통해 Synapse를 관리하는 경우, 덮어쓰기될 생성된 파일을 편집하는 대신 지원되는 구성 소스에 공급자 설정을 입력하십시오.
기본적으로 한 서비스에서 로그아웃해도 다른 모든 서비스의 브라우저 세션이 자동으로 종료되는 것은 아닙니다. Keycloak 로그아웃 알림을 통해 Synapse 세션도 종료되도록 하려면 backchannel_logout_enabled: trueSynapse의 Keycloak 공급자 설정에서 해당 기능을 활성화하고 Keycloak의 백채널 로그아웃 URL을 다음과 같이 설정하십시오.
https://matrix.example.com/_synapse/client/oidc/backchannel_logout
이 기능은 선택 사항이며 로그아웃 정책 및 클라이언트 설정에 따라 달라집니다. Synapse 로그아웃과 Keycloak 로그아웃, 두 가지 로그아웃 방향을 모두 테스트하십시오. Element에서 로그아웃하는 것만으로 Keycloak 세션이 종료된다고 가정하지 마십시오.
배포 구성 검사를 통해 YAML 파일의 유효성을 검사한 다음, 패키지 또는 컨테이너 설정에서 지원하는 방법을 사용하여 Synapse를 다시 시작하거나 재로드하십시오. Synapse 로그에서 OIDC 검색, 클라이언트 인증, 콜백 또는 클레임 매핑 오류를 확인하십시오. 먼저 테스트 계정을 사용하여 Matrix ID와 표시 이름이 예상 값인지 확인하십시오.
Synapse에서 OIDC 로그인을 알리면 Element Web은 SSO 로그인 옵션을 제공할 수 있습니다. Element의 sso_redirect_options설정은 브라우저 환경을 제어하며 Keycloak을 구성하거나 클라이언트 암호를 저장하지 않습니다. config.json환영 페이지 또는 로그인 페이지에 접속한 인증되지 않은 방문자를 사용 가능한 SSO 흐름으로 보내려면 Element Web에 다음과 같은 설정을 추가하세요.
{
"sso_redirect_options": {
"immediate": false,
"on_welcome_page": true,
"on_login_page": true
}
}
SSO 로그인만 필요한 배포 환경에서는 "immediate": true인증되지 않은 모든 사용자에 대해 SSO를 시작하도록 설정하십시오. 이렇게 하면 비밀번호 또는 다른 로그인 옵션에 접근하기가 더 어려워질 수 있으므로, 적용하기 전에 복구 및 관리자 접근을 테스트해야 합니다. 사용자가 SSO와 다른 로그인 방법 중에서 선택해야 하는 경우, 자동 리디렉션을 비활성화하고 로그인 흐름에 SSO 옵션이 표시되는지 테스트하십시오.
MAS는 별도의 인증 서비스이며 Keycloak의 OIDC 클라이언트 역할을 할 수 있습니다. 이 아키텍처에서는 Keycloak의 리디렉션 URI를 다음과 같이 구성해야 합니다 https://auth.example.com/upstream/callback/<provider-id>. 여기서 공급자 ID는 MAS 구성과 일치해야 합니다. MAS의 설정에서 공급자를 구성하면 upstream_oauth2.providers홈서버의 MAS 기반 인증 흐름을 사용하게 됩니다. 이 상위 연결에는 Synapse의 내장 기능을 사용하지 마십시오 /_synapse/client/oidc/callback. MAS는 권한 부여 코드 흐름을 지원하는 OIDC 공급자가 필요합니다. MAS의 구성 형식, 필수 공급자 ID 및 마이그레이션 단계는 Synapse의 내장 기능과 다릅니다 oidc_providers.
OIDC를 Synapse에 연결하고, 정확한 콜백 URL을 설정하고, 사용자 클레임을 매핑하고, 로그아웃을 테스트하여 Element Web용 Keycloak SSO를 구성하십시오.
응답하지 않는 LDAP 서버로 인해 발생하는 Zimbra 시작 오류를 진단하고 해결하는 방법을 알아보세요. 여기에는 서비스 점검, DNS, 포트, 인증서, LDAP URL 및 복구 유효성 검사가 포함됩니다.
s3ng 드라이버, POSIX 메타데이터, 버킷 정책, 유효성 검사 및 안전한 프로덕션 환경 점검을 사용하여 ownCloud Infinite Scale용 S3 호환 객체 스토리지를 구성합니다.
Zimbra Postfix 백로그를 검사하고, 지연된 메일과 보류된 메일을 구분하고, 안전하게 큐를 비우고, 메시지를 삭제하지 않고 진행 상황을 확인하는 방법을 알아보세요.
Kopano를 사용하여 Z-Push를 구성하고 ActiveSync를 통해 이메일, 연락처, 캘린더 및 작업 정보를 안전하게 동기화하세요. 백엔드 및 배포 옵션을 비교하고 모바일 설정을 확인하세요.
Jitsi Meet 연결 끊김 문제를 해결하기 위한 실용적인 체크리스트를 소개합니다. 브라우저, 모바일 기기, 불안정한 네트워크, 방화벽, 자체 호스팅 서버 등 다양한 요인을 점검해 보세요.
Nextcloud Talk 통화 품질 문제를 해결하고, coturn을 구성하고, 필요한 포트를 열고, ICE 후보를 테스트하고, TURN 또는 HPB가 적절한 해결책인지 판단합니다.
사용자 지정 홈서버, HTTPS, 캐싱 및 보안 헤더를 사용하여 Nginx에 Element Web을 배포하고 일반적인 설정 문제를 간단하게 확인하는 방법을 알아보세요.
BigBlueButton의 "지원되지 않는 파일 형식" 프레젠테이션 오류를 해결하려면 파일 확장자를 확인하고, 실제 PDF 파일로 내보내고, 다른 파일을 테스트하고, 관리자에게 문의해야 하는 시점을 파악하십시오.
Matrix Synapse의 "열린 파일이 너무 많습니다" 오류를 해결하려면 서비스 제한을 확인하고, systemd 재정의를 적용하고, 실행 중인 프로세스를 확인하십시오.