4.3. LDAP(Lightweight Directory Access Protocol) 및 Active Directory
Red Hat Single Sign-On에는 LDAP/AD 공급자가 포함되어 있습니다. 하나의 Red Hat Single Sign-On 영역에 여러 개의 LDAP 서버를 통합하고 LDAP 사용자 속성을 Red Hat Single Sign-On 공통 사용자 모델에 매핑할 수 있습니다.
기본적으로 Red Hat Single Sign-On은 사용자 계정의 사용자 이름, 이메일, 이름, 성을 매핑하지만 추가 매핑을 구성할 수도 있습니다. Red Hat Single Sign-On의 LDAP/AD 공급자는 LDAP/AD 프로토콜 및 스토리지, 편집 및 동기화 모드를 사용하여 암호 검증을 지원합니다.
4.3.1. 페더레이션 LDAP 스토리지 구성
절차
메뉴에서 User Federation 을 클릭합니다.
사용자 페더레이션
- Add Provider (프로바이더 추가) 목록에서 ldap 를 선택합니다. Red Hat Single Sign-On은 LDAP 구성 페이지로 이동합니다.
4.3.2. 스토리지 모드
Red Hat Single Sign-On은 LDAP의 사용자를 로컬 Red Hat Single Sign-On 사용자 데이터베이스로 가져옵니다. 이 사용자 데이터베이스 복사본은 온 디맨드 또는 주기적 백그라운드 작업을 통해 동기화됩니다. 암호를 동기화하기 위한 예외가 있습니다. Red Hat Single Sign-On은 암호를 가져오지 않습니다. 암호 유효성 검사는 항상 LDAP 서버에서 수행됩니다.
동기화의 장점은 필요한 추가 사용자별 데이터가 로컬에 저장되므로 모든 Red Hat Single Sign-On 기능이 효율적으로 작동할 수 있다는 점입니다. 단점은 Red Hat Single Sign-On이 특정 사용자를 처음 쿼리할 때마다 Red Hat Single Sign-On이 해당 데이터베이스 삽입을 수행한다는 것입니다.
LDAP 서버와 가져오기를 동기화할 수 있습니다. LDAP 매퍼가 데이터베이스 대신 LDAP에서 특정 속성을 항상 읽으면 가져오기 동기화가 필요하지 않습니다.
사용자를 Red Hat Single Sign-On 사용자 데이터베이스로 가져오지 않고 Red Hat Single Sign-On에서 LDAP를 사용할 수 있습니다. LDAP 서버는 Red Hat Single Sign-On 런타임에서 사용하는 공통 사용자 모델을 백업합니다. LDAP에서 Red Hat Single Sign-On 기능에 필요한 데이터를 지원하지 않는 경우 해당 기능이 작동하지 않습니다. 이 접근 방식의 장점은 LDAP 사용자의 사본을 가져오고 Red Hat Single Sign-On 사용자 데이터베이스에 동기화하는 리소스 사용량이 없다는 것입니다.
LDAP 구성 페이지의 사용자 가져오기 스위치는 이 스토리지 모드를 제어합니다. 사용자를 가져오려면 이 스위치를 ON 으로 전환합니다.
사용자 가져오기 를 비활성화하는 경우 사용자 프로필 속성을 Red Hat Single Sign-On 데이터베이스에 저장할 수 없습니다. LDAP에 매핑된 사용자 프로필 메타데이터를 제외하고 메타데이터를 저장할 수 없습니다. 이 메타데이터에는 역할 매핑, 그룹 매핑, LDAP 매퍼 구성에 따른 기타 메타데이터가 포함될 수 있습니다.
LDAP가 매핑되지 않은 사용자 데이터를 변경하려고 하면 사용자 업데이트가 불가능합니다. 예를 들어 사용자의 활성화된
플래그가 LDAP 속성에 매핑되지 않는 한 LDAP 매핑된 사용자를 비활성화할 수 없습니다.
4.3.3. 편집 모드
사용자와 관리자는 Admin Console을 통해 사용자 메타데이터, 계정 콘솔을 통한 사용자 및 관리자를 수정할 수 있습니다. LDAP 구성 페이지의 Edit Mode
구성은 사용자의 LDAP 업데이트 권한을 정의합니다.
- READONLY
- 사용자 이름, 이메일, 이름, 성 및 기타 매핑된 속성을 변경할 수 없습니다. Red Hat Single Sign-On에는 사용자가 이러한 필드를 업데이트하려고 할 때마다 오류가 표시됩니다. 암호 업데이트는 지원되지 않습니다.
- WRITABLE
- 사용자 이름, 이메일, 이름, 성, 기타 매핑된 속성 및 암호를 변경하고 LDAP 저장소와 자동으로 동기화할 수 있습니다.
- UNSYNCED
- Red Hat Single Sign-On은 사용자 이름, 이메일, 이름, 이름, 암호에 대한 변경 사항을 Red Hat Single Sign-On 로컬 스토리지에 저장하므로 관리자는 이 데이터를 다시 LDAP에 동기화해야 합니다. 이 모드에서 Red Hat Single Sign-On 배포는 읽기 전용 LDAP 서버에서 사용자 메타데이터를 업데이트할 수 있습니다. 이 옵션은 LDAP에서 로컬 Red Hat Single Sign-On 사용자 데이터베이스로 사용자를 가져올 때에도 적용됩니다.
Red Hat Single Sign-On이 LDAP 공급자를 생성하는 경우 Red Hat Single Sign-On은 초기 LDAP 매퍼 세트도 생성합니다. Red Hat Single Sign-On은 벤더,편집 모드 및 가져오기 스위치의 조합을 기반으로 이러한 매퍼를 구성합니다. 예를 들어 편집 모드가 UNSYNCED인 경우 Red Hat Single Sign-On은 LDAP 서버가 아닌 데이터베이스에서 특정 사용자 속성을 읽도록 매퍼를 구성합니다. 그러나 나중에 편집 모드를 변경하는 경우 구성이 UNSYNCED 모드에서 변경되었는지 여부를 탐지할 수 없기 때문에 매퍼의 구성은 변경되지 않습니다. LDAP 공급자를 생성할 때 편집 모드를 결정합니다. 이 노트는 Import Users 스위치에도 적용됩니다.
4.3.4. 기타 설정 옵션
- 콘솔 표시 이름
- 관리 콘솔에 표시할 공급자의 이름입니다.
- 우선 순위
- 사용자를 검색하거나 사용자를 추가할 때 공급자의 우선 순위입니다.
- 동기화 등록
- Red Hat Single Sign-On에서 생성한 새 사용자를 LDAP에 추가하려는 경우 이 스위치를 ON 으로 전환합니다.
- Kerberos 인증 허용
- LDAP에서 프로비저닝된 사용자 데이터를 사용하여 영역에서 Kerberos/SPEGO 인증을 활성화합니다. 자세한 내용은 Kerberos 섹션 을 참조하십시오.
- 기타 옵션
- 관리 콘솔의 툴팁 위에 마우스 포인터를 올려 놓으면 이러한 옵션에 대한 자세한 내용을 확인할 수 있습니다.
4.3.5. LDAP에서 SSL을 통해 연결
LDAP 저장소에 대한 보안 연결 URL(예:ldaps://myhost.com:636
)을 구성하는 경우 Red Hat Single Sign-On은 SSL을 사용하여 LDAP 서버와 통신합니다. Red Hat Single Sign-On이 LDAP에 대한 SSL 연결을 신뢰할 수 있도록 Red Hat Single Sign-On 서버 측에서 신뢰 저장소를 구성합니다.
신뢰할 수 있는 SPI를 사용하여 Red Hat Single Sign-On의 글로벌 신뢰 저장소를 구성합니다. 글로벌 신뢰 저장소를 구성하는 방법에 대한 자세한 내용은 서버 설치 및 구성 가이드를 참조하십시오. 신뢰 저장소 SPI를 구성하지 않으면 신뢰 저장소는 Java에서 제공하는 기본 메커니즘으로 대체되며, 이 메커니즘은 javax.net.ssl.trustStore
시스템 속성 또는 시스템 속성이 설정되지 않은 경우 JDK의 cacerts 파일일 수 있습니다.
LDAP 페더레이션 공급자 구성의 Use Truststore SPI
구성 속성은 신뢰 저장소(SPI)를 제어합니다. 기본적으로 Red Hat Single Sign-On은 대부분의 배포에 적합한 ldaps의
속성을 로 설정합니다. Red Hat Single Sign-On은 LDAP에 대한 연결 URL이 ldaps
로만 시작하는 경우 Truststore SPI를 사용합니다.
4.3.6. LDAP 사용자를 Red Hat Single Sign-On에 동기화
사용자 가져오기 옵션을 설정하면 LDAP 공급자가 Red Hat Single Sign-On 로컬 데이터베이스로 LDAP 사용자 가져오기를 처리합니다. 사용자가 처음 로그인할 때 LDAP 공급자는 LDAP 사용자를 Red Hat Single Sign-On 데이터베이스로 가져와서 LDAP 암호를 검증합니다. 사용자가 처음 로그인하면 Red Hat Single Sign-On이 사용자를 가져오는 유일한 시간입니다. Admin Console에서 Users 메뉴를 클릭하고 모든 사용자 보기 버튼을 클릭하면 Red Hat Single Sign-On으로 한 번 이상 인증된 LDAP 사용자만 표시됩니다. Red Hat Single Sign-On은 사용자를 이러한 방식으로 가져오기 때문에 이 작업으로 전체 LDAP 사용자 데이터베이스를 가져오지 않습니다.
모든 LDAP 사용자를 Red Hat Single Sign-On 데이터베이스에 동기화하려면 LDAP 공급자 구성 페이지에서 동기화 설정을 구성하고 활성화합니다.
두 가지 유형의 동기화가 있습니다.
- 정기적인 완전 동기화
- 이 유형은 모든 LDAP 사용자를 Red Hat Single Sign-On 데이터베이스와 동기화합니다. 이미 Red Hat Single Sign-On에 있지만 LDAP에서는 다른 LDAP 사용자가 Red Hat Single Sign-On 데이터베이스에서 직접 업데이트합니다.
- 정기적인 변경된 사용자 동기화
- 동기화할 때 Red Hat Single Sign-On은 마지막 동기화 후에 생성 또는 업데이트된 사용자를 생성하거나 업데이트합니다.
동기화하는 가장 좋은 방법은 LDAP 공급자를 처음 생성할 때 모든 사용자 동기화 를 클릭한 다음 변경된 사용자의 주기적 동기화를 설정하는 것입니다.
4.3.7. LDAP 매퍼
LDAP 매퍼는 LDAP 공급자가 트리거하는 리스너
입니다. LDAP 통합을 위한 또 다른 확장 지점을 제공합니다. LDAP 매퍼는 다음과 같은 경우 트리거됩니다.
- 사용자는 LDAP를 사용하여 로그인합니다.
- 사용자가 처음에 등록합니다.
- 관리 콘솔은 사용자를 쿼리합니다.
LDAP 페더레이션 공급자를 생성하면 Red Hat Single Sign-On에서 이 공급자 의 매퍼
세트를 자동으로 제공합니다. 이 세트는 사용자가 매퍼를 개발하거나 기존 항목을 업데이트/삭제할 수도 있습니다.
- 사용자 속성 맵퍼
-
이 매퍼는 Red Hat Single Sign-On 사용자의 속성에 매핑되는 LDAP 속성을 지정합니다. 예를 들어 Red Hat Single Sign-On 데이터베이스의
email
속성으로mail
LDAP 속성을 구성할 수 있습니다. 이 매퍼 구현의 경우 일대일 매핑이 항상 존재합니다. - fullname Mapper
-
이 매퍼는 사용자의 전체 이름을 지정합니다. Red Hat Single Sign-On은 LDAP 속성(일반적으로
cn
)에 이름을 저장하고, Red Hat Single Sign-On 데이터베이스의firstName
및lastname
속성에 이름을 매핑합니다. LDAP 배포에는cn
이 사용자 전체 이름을 포함하는 것이 일반적입니다.
Red Hat Single Sign-On에 새 사용자를 등록하고 LDAP 공급자 의 동기화 등록이
ON인 경우 fullName 매퍼는 사용자 이름으로 대체할 수 있습니다. 이 대체 기능은 Microsoft Active Directory (MSAD)를 사용할 때 유용합니다. MSAD에 대한 일반적인 설정은 cn
LDAP 속성을 fullName으로 구성하는 것이며, 동시에 LDAP 공급자 구성의 RDN
LDAP 속성으로 cn
LDAP 속성을 사용합니다. 이 설정에서 Red Hat Single Sign-On은 사용자 이름으로 대체됩니다. 예를 들어 Red Hat Single Sign-On 사용자 "john123"을 생성하고 firstName과 lastName을 비워 두는 경우 fullname 매퍼는 LDAP의 cn
값으로 "john123"을 저장합니다. firstName 및 lastName에 "John Doe"를 입력하면 전체 이름 매퍼는 사용자 이름으로 다시 떨어지면 LDAP cn
을 "John Doe" 값으로 업데이트하는 것이 필요하지 않습니다.
- 하드 코딩된 속성 맵퍼
-
이 매퍼는 LDAP에 연결된 각 Red Hat Single Sign-On 사용자에게 하드 코딩된 속성 값을 추가합니다. 이 매퍼는
활성화된
또는emailVerified
사용자 속성에 대한 값을 강제 적용할 수도 있습니다. - 역할 맵퍼
-
이 매퍼는 LDAP에서 Red Hat Single Sign-On 역할 매핑으로의 역할 매핑을 구성합니다. 단일 역할 매퍼는 LDAP 역할(일반적으로 LDAP 트리의 특정 분기의 그룹)을 지정된 클라이언트의 영역 역할 또는 클라이언트 역할에 해당하는 역할에 매핑할 수 있습니다. 동일한 LDAP 공급자에 대해 더 많은 역할 매퍼를 구성할 수 있습니다. 예를 들어
ou=main,dc=example,dc=org
아래의 그룹에서 영역 역할 매핑에 매핑한 그룹 및ou=
맵에 있는 그룹의 역할 매핑을 클라이언트 progress의 클라이언트 역할 매핑으로 지정할 수 있습니다.finance
,dc=example,dc=org - 하드 코딩된 역할 맵퍼
- 이 매퍼는 지정된 Red Hat Single Sign-On 역할을 LDAP 공급자의 각 Red Hat Single Sign-On 사용자에게 부여합니다.
- 그룹 맵퍼
- 이 매퍼는 LDAP 트리의 분기의 LDAP 그룹을 Red Hat Single Sign-On 내의 그룹에 매핑합니다. 또한 이 매퍼는 LDAP의 user-group 매핑을 Red Hat Single Sign-On의 사용자 그룹 매핑으로 전파합니다.
- MSAD 사용자 계정 맵퍼
-
이 매퍼는 Microsoft Active Directory (MSAD)에 한정되어 있습니다. MSAD 사용자 계정 상태를 활성화된 계정 또는 만료된 암호와 같은 Red Hat Single Sign-On 계정 상태에 통합할 수 있습니다. 이 매퍼는
userAccountControl
,pwdLastSet
LDAP 속성을 사용하며, MSAD와 관련된 LDAP 속성을 사용하며 LDAP 표준은 아닙니다. 예를 들어pwdLastSet
값이0
이면 Red Hat Single Sign-On 사용자가 암호를 업데이트해야 합니다. 그 결과 사용자에게 UPDATE_PASSWORD 필수 작업이 추가됩니다.userAccountControl
값이514
(비활성화된 계정)이면 Red Hat Single Sign-On 사용자가 비활성화됩니다. - 인증서 맵퍼
-
이 매퍼는 X.509 인증서를 매핑합니다. Red Hat Single Sign-On은 X.509 인증 및
Full 인증서와 함께 PEM 형식의
ID 소스로 사용합니다. 이 매퍼는사용자 속성
맵퍼와 유사하게 작동하지만 Red Hat Single Sign-On은 PEM 또는 DER 형식 인증서를 저장하는 LDAP 속성에 대해 필터링할 수 있습니다. 이 매퍼를 사용하여LDAP에서 항상 읽기 값을
활성화합니다.
사용자 이름, firstname, lastname, email과 같은 기본 Red Hat Single Sign-On 사용자 속성을 해당 LDAP 속성에 매핑하는 사용자 속성 매퍼입니다. 이러한 항목을 확장하고 추가 속성 매핑을 제공할 수 있습니다. 관리 콘솔은 해당 매퍼를 구성하는 데 도움이 되는 툴팁을 제공합니다.
4.3.8. 암호 해시
Red Hat Single Sign-On에서 암호를 업데이트하면 Red Hat Single Sign-On에서 일반 텍스트 형식으로 암호를 보냅니다. 이 작업은 기본 제공 Red Hat Single Sign-On 데이터베이스의 암호를 업데이트하는 것과 다릅니다. 여기서 Red Hat Single Sign-On 해시 및 암호를 데이터베이스로 보내기 전에 암호를 압축합니다. LDAP의 경우 Red Hat Single Sign-On은 LDAP 서버를 사용하여 암호를 해시하고 해석합니다.
기본적으로 MSAD, RHDS 또는 FreeIPA 해시 및 압축 암호와 같은 LDAP 서버입니다. RFC3062 에 설명된 대로 LDAPv3 Password Modify Extended Operation 을 사용하지 않는 한 OpenLDAP 또는 ApacheDS와 같은 기타 LDAP 서버는 암호를 일반 텍스트로 저장합니다. LDAP 구성 페이지에서 LDAPv3 Password Modify Extended Operation을 활성화합니다. 자세한 내용은 LDAP 서버 설명서를 참조하십시오.
항상 ldapsearch
및 base64code the userPassword
특성 값을 사용하여 변경된 디렉터리 항목을 검사하여 사용자 암호가 올바르게 해시되고 일반 텍스트로 저장되지 않았는지 확인합니다.
4.3.9. 문제 해결
org.keycloak.storage.ldap
범주의 TRACE로 로깅 수준을 높이는 것이 유용합니다. 이 설정을 사용하면 LDAP 서버에 대한 모든 쿼리에 대한 로깅 로깅 및 쿼리를 보내는 데 사용된 매개 변수를 포함하여 많은 로깅 메시지가 TRACE
수준에 서버 로그에 전송됩니다. 사용자 포럼 또는 JIRA에 LDAP 질문을 생성할 때 활성화된 TRACE 로깅으로 서버 로그를 연결하는 것이 좋습니다. 이 방법이 너무 크면 작업 중에 로그에 추가된 메시지와 함께 서버 로그의 스니펫만 포함하는 것이 좋습니다. 이로 인해 문제가 발생합니다.
LDAP 공급자를 생성할 때 서버 로그에 다음과 같이 INFO(정보) 수준에 메시지가 표시됩니다.
When you create LDAP provider, message appear in the server log in the INFO level starting with:
Creating new LDAP Store for the LDAP storage provider: ...
LDAP 공급자의 구성이 표시됩니다. 질문을 하거나 버그를 보고하기 전에 이 메시지를 포함하여 LDAP 구성을 표시하는 것이 좋습니다. 결국 일부 자리 표시자 값으로 포함하지 않는 일부 구성 변경 사항을 자유롭게 교체할 수 있습니다. 한 예로 bindDn=some-placeholder
가 있습니다. connectionUrl
의 경우 자유롭게 교체할 수 있지만 일반적으로 사용되는 프로토콜(ldap
vs ldaps
)을 포함하는 것이 유용합니다. 마찬가지로 DEBUG 수준에서 다음과 같이 메시지와 함께 표시되는 LDAP 매퍼 구성에 대한 세부 정보를 포함하는 것이 유용할 수 있습니다.
Mapper for provider: XXX, Mapper name: YYY, Provider: ZZZ ...
이러한 메시지는 DEBUG 로깅이 활성화된 경우에만 표시됩니다.
-
성능 또는 연결 풀링 문제를 추적하려면 속성 연결 풀 디버그 수준의 값을 설정하는 것이 좋습니다.For tracking the performance or connection pooling issues, consider setting the value of property
Connection Pool Debug Level
of
성능 또는 연결 풀링 문제를 추적하려면 LDAP 공급자의 연결 풀 디버그 수준
속성 값을 all
값으로 설정하는 것이 좋습니다. 그러면 LDAP 연결 풀링에 포함된 로깅을 사용하여 서버 로그에 많은 추가 메시지가 추가됩니다. 이는 연결 풀링 또는 성능과 관련된 문제를 추적하는 데 사용할 수 있습니다.
연결 풀링의 구성을 변경한 후 LDAP 공급자 연결의 다시 초기화를 적용하려면 Keycloak 서버를 다시 시작해야 할 수 있습니다.
서버를 다시 시작한 후에도 연결 풀링에 대한 메시지가 더 이상 나타나지 않으면 LDAP 서버에서 연결 풀링이 작동하지 않음을 나타낼 수 있습니다.
-
LDAP 문제를 보고하는 경우 LDAP 트리의 일부를 대상 데이터에 첨부하여 환경에 문제가 발생할 수 있습니다. 예를 들어 일부 사용자의 로그인에 시간이 오래 걸리는 경우 다양한 "group" 항목의
멤버
속성 수를 보여주는 LDAP 항목을 연결하는 것이 좋습니다. 이 경우 Red Hat Single Sign-On의 일부 그룹 LDAP 매퍼(또는 Role LDAP Mapper)에 매핑된 그룹 항목을 추가하는 것이 유용할 수 있습니다.
LDAP 문제를 보고하는 경우 LDAP 트리의 일부를 대상 데이터에 첨부하여 환경에 문제가 발생할 수 있습니다. 예를 들어 일부 사용자의 로그인에 시간이 오래 걸리는 경우 다양한 "group" 항목의 멤버
속성 수를 보여주는 LDAP 항목을 연결하는 것이 좋습니다. 이 경우 Red Hat Single Sign-On의 일부 그룹 LDAP 매퍼(또는 Role LDAP Mapper)에 매핑된 그룹 항목을 추가하는 것이 유용할 수 있습니다.