8.4. OSGi 컨테이너에서 LDAP 인증 활성화
이 섹션에서는 OSGi 컨테이너에서 LDAP 영역을 구성하는 방법을 설명합니다. 컨테이너가 X.500 디렉터리 서버에 저장된 사용자 항목을 기반으로 인증 정보를 인증하도록 새 영역은 기본 karaf
영역을 재정의합니다.
8.4.1. 참고 자료
다음과 같이 LDAP 인증에 대한 자세한 문서는 다음과 같습니다.
- LdapLoginModule 옵션- 2.1.7절. “JAAS LDAP 로그인 모듈” 에 자세히 설명되어 있습니다.
- 다른 디렉토리 서버에 대한 구성- 이 튜토리얼에서는 389-DS 만 다룹니다. Microsoft Active Directory와 같은 다른 디렉터리 서버를 구성하는 방법에 대한 자세한 내용은 “다른 디렉터리 서버의 필터 설정” 을 참조하십시오.
8.4.2. 독립 실행형 OSGi 컨테이너 절차
독립 실행형 OSGi 컨테이너에서 LDAP 인증을 활성화하려면 다음을 수행합니다.
- X.500 디렉터리 서버가 실행 중인지 확인합니다.
터미널 창에 다음 명령을 입력하여 Karaf 컨테이너를 시작합니다.
./bin/fuse
-
ldap-module.xml
이라는 파일을 생성합니다. 예 8.1. “독립 실행형용 JAAS Cryostat” 를
ldap-module.xml
에 복사합니다.예 8.1. 독립 실행형용 JAAS Cryostat
<?xml version="2.0" encoding="UTF-8"?> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:jaas="http://karaf.apache.org/xmlns/jaas/v1.0.0" xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"> <jaas:config name="karaf" rank="200"> <jaas:module className="org.apache.karaf.jaas.modules.ldap.LDAPLoginModule" flags="required"> initialContextFactory=com.sun.jndi.ldap.LdapCtxFactory connection.url=ldap://localhost:389 connection.username=cn=Directory Manager connection.password=DIRECTORY_MANAGER_PASSWORD connection.protocol= user.base.dn=ou=People,dc=localdomain user.filter=(&(objectClass=inetOrgPerson)(uid=%u)) user.search.subtree=true role.base.dn=ou=Groups,dc=localdomain role.name.attribute=cn role.filter=(uniquemember=%fqdn) role.search.subtree=true authentication=simple </jaas:module> </jaas:config> </blueprint>
ldap-module.xml
파일에서 다음 설정을 사용자 지정해야 합니다.- connection.url
-
이 URL을 디렉터리 서버 인스턴스의 실제 위치로 설정합니다. 일반적으로 이 URL의 형식은
ldap://Hostname:포트
입니다. 예를 들어 389 Directory Server의 기본 포트는 IP 포트389
입니다. - connection.username
-
디렉터리 서버에 대한 연결을 인증하는 데 사용되는 사용자 이름을 지정합니다. 389 Directory Server의 경우 기본값은 일반적으로
cn=Directory Manager
입니다. - connection.password
- 디렉터리 서버에 연결하기 위한 자격 증명의 암호 부분을 지정합니다.
- 인증
인증 프로토콜에 대해 다음 대안 중 하나를 지정할 수 있습니다.
-
간단히
말해 사용자 인증 정보가 제공되며 이 경우connection.username
및connection.password
옵션을 설정해야 합니다. none
은 인증이 수행되지 않음을 나타냅니다. 이 경우connection.username
및connection.password
옵션을 설정하지 않아야 합니다.이 로그인 모듈은
karaf
라는 JAAS 영역을 생성합니다. 이 영역은 Fuse에서 사용하는 기본 JAAS 영역과 동일한 이름입니다.순위
속성 값이0
보다 큰 이 영역을 재정의하면 순위가0
인 표준karaf
영역을 재정의합니다.LDAP를 사용하도록 Fuse를 구성하는 방법에 대한 자세한 내용은 2.1.7절. “JAAS LDAP 로그인 모듈” 을 참조하십시오.
중요위의 JAAS 속성을 설정할 때 속성 값을 큰따옴표로 묶 지 마십시오.
-
새 LDAP 모듈을 배포하려면
ldap-module.xml
을 Karaf 컨테이너의deploy/
디렉터리(hot deploy)에 복사합니다.LDAP 모듈이 자동으로 활성화됩니다.
참고이후 LDAP 모듈 배포를 취소해야 하는 경우 Karaf 컨테이너가 실행되는 동안
deploy/
디렉토리에서ldap-module.xml
파일을 삭제하여 이를 수행할 수 있습니다.
8.4.3. LDAP 인증 테스트
다음과 같이 Karaf 클라이언트
유틸리티를 사용하여 실행 중인 컨테이너에 연결하여 새 LDAP 영역을 테스트합니다.
- 새 명령 프롬프트를 엽니다.
-
디렉토리를 Karaf
InstallDir/bin
디렉토리로 변경합니다. identity
jdoe
를 사용하여 실행 중인 컨테이너 인스턴스에 로그인하려면 다음 명령을 입력합니다../client -u jdoe -p secret
컨테이너의 원격 콘솔에 성공적으로 로그인해야 합니다. 명령 콘솔에서
jaas:
다음에 [Tab] 키를 입력합니다.jdoe@root()> jaas: Display all 31 possibilities? (31 lines)? jaas:cancel jaas:group-add ... jaas:whoami
jdoe
는 모든jaas
명령에 액세스할 수 있습니다(관리자
역할과 일치).-
logout
명령을 입력하여 원격 콘솔을 로그아웃합니다. identity
janedoe
를 사용하여 실행 중인 컨테이너 인스턴스에 로그인하려면 다음 명령을 입력합니다../client -u janedoe -p secret
컨테이너의 원격 콘솔에 성공적으로 로그인해야 합니다. 명령 콘솔에서
jaas:
다음에 [Tab] 키를 입력합니다.janedoe@root()> jaas: Display all 25 possibilities? (25 lines)? jaas:cancel jaas:group-add ... jaas:users
janedoe
는 거의 모든jaas
명령에 액세스할 수 있습니다(manager
역할과 일치).-
logout
명령을 입력하여 원격 콘솔을 로그아웃합니다. identity
crider
를 사용하여 실행 중인 컨테이너 인스턴스에 로그인하려면 다음 명령을 입력합니다../client -u crider -p secret
컨테이너의 원격 콘솔에 성공적으로 로그인해야 합니다. 명령 콘솔에서
jaas:
다음에 [Tab] 키를 입력합니다.crider@root()> jaas: jaas:manage jaas:realm-list jaas:realm-manage jaas:realms jaas:user-list jaas:users
마케터는 5개의
jaas
명령에만 액세스할 수 있습니다(예:뷰어 역할과
일치).-
logout
명령을 입력하여 원격 콘솔을 로그아웃합니다.
8.4.4. 문제 해결
LDAP 연결을 테스트하는 동안 문제가 발생하면 DEBUG
에 로깅 수준을 늘리면 LDAP 서버 연결에서 발생하는 상황을 자세히 추적할 수 있습니다.
다음 단계를 수행합니다.
Karaf 콘솔에서 다음 명령을 입력하여 로깅 수준을
DEBUG
로 늘립니다.log:set DEBUG
Karaf 로그를 실시간으로 관찰합니다.
log:tail
로그 목록에서 이스케이프하려면 Ctrl-C를 입력합니다.