LDAP 을 이용한 드루팔 및 이기종 시스템의 계정 통합 운영 방법

회사의 각종 계정을 담당하는 IT 기술자라면,
LDAP 프로토콜에 대해서 들어본 적이 있을 것이다. http://en.wikipedia.org/wiki/Ldap
이 프로토콜은 (계정 관리용) 디렉터리 서비스 분야에서 널리 알려진 약속이다.

LDAP을 이용하면 여러 시스템에 분산된 계정 정보를 통합 관리할 수가 있다.
다른 SW 및 HW 사이라도, 웹 환경이든 아니든 단지 LDAP 약속만 서로 준수하면 된다.
예를 들어 드루팔 사이트와 기존 메일 서버와 회사 게시판 계정의 통합 운영도 가능하다.

LDAP 은 예전의 X.500, DAP 규약을 거쳐 많은 발전을 이루어,
요즘은 C/S(Client/Server)만 준비하면 바로 적용할 수 있다.
http://directory.apache.org/apacheds/1.5/12-some-background-directories-...

드루팔 모듈 중에도 LDAP 클라이언트을 담당하는 것이 있다.

LDAP integration 모듈 - http://drupal.org/project/ldap_integration
대단히 잘 만든, LDAP과 드루팔 계정 통합 모듈이다. 설정이 까다롭긴 하다.
아래 과정을 수행하려면 LDAP 프로토콜에 관한 사전 지식이 요구된다. (공부!)

[LDAP 을 이용한 드루팔 SSO 및 계정 통합 방법]

1. 우선 LDAP 서버를 준비해야 한다. 이미 있다면 그것을 이용한다.
없다면 다음과 같은 제품을 추천한다. Apache Directory Server
http://directory.apache.org/ 의 서버 제품. Java로 만들어져 있다.
(윈도우즈용도 나쁘지 않았다. 설치 후 윈도우즈 "서비스"에 추가, 자동 기동한다)

2. Apache Directory Server 를 기동시키자(이미 기동 중?). localhost 도 상관없지만,
서버 머신의 호스트명은 외부의 "ldap_server"라고 가정하자.
LDAP 서비스의 관리자 계정을 설정하기 위해 아래 과정을 수행하자.

3. Apache Directory Studio http://directory.apache.org/studio/ 를 설치한 후,
http://directory.apache.org/studio/static/users_guide/ldap_browser/ 에 있는
Create connection 항목을 보고 LDAP 서버에 접근해 보자.
또다른 설명 자료로,
http://directory.apache.org/apacheds/1.5/apacheds-v15-basic-users-guide....
에 있는 Changing the admin password 항목을 추천한다.

위 설명문에 있는대로 admin 계정의 암호를 바꾸자. (여기서는 "adm_pass"로 가정)

4. 또다시 Apache Directory Studio 를 이용하여, 아래 이미지와 같은
Organization Unit를 준비하자 (예: "ou=drupal6,ou=system" )

Apache Directory Studio를 이용, LDAP 정보를 설정Apache Directory Studio를 이용, LDAP 정보를 설정

그런 다음 uid로 test2라는 계정을 만들어 보자.
이 때 주의할 점은, Apache Directory Studio를 이용 새로운 엔트리를 생성할 때,
다음과 같은 objectClass를 추가하지 않으면 안된다. 그래야 uid로 생성 가능하다.

inetOrgPerson
organizationalPerson
person
top

test2의 uid로 생성한 후, 속성 추가로 sn / mail / userPassword / description 어트리뷰트를
아래와 같이 정의하자. 임시로 userPassword는 MD5 형태로 "testPassword"를 가정하자.

* 참고로 test2 계정에 관한 LDIF 파일 내용은 다음과 같다.

dn: uid=test2,ou=drupal6,ou=system
objectClass: organizationalPerson
objectClass: person
objectClass: inetOrgPerson
objectClass: top
cn: test2 uid
description: User test2 Description
mail: jjjj@test2.com
sn: uid sn
uid: test2
userPassword:: e01ENX1razFJM0JZM0ZxK0JYQ2pjZUVzLzhnPT0=

* 이로서 LDAP 서버 쪽의 준비는 끝났다. 이제부터 LDAP 클라이언트 측인 드루팔 설정이다.

5. LDAP 클라이언트를 PHP에서 기동하기 위해서는 php.ini의
extension=php_ldap.dll 를 활성화 시켜야 한다. 아파치 재기동도 잊지 말자.
이를 수행치 않고 넘어가면, 드루팔로 LDAP 로그인할 때 다음과 같은 에러가 날 수 있다.
Fatal error: Call to undefined function ldap_connect() in \dru6\sites\all\modules\ldap_integration\ldap_integration\LDAPInterface.php on line 132

6. 드루팔에 LDAP integration 모듈 - http://drupal.org/project/ldap_integration
설치/활성화하자. 여타 부속모듈도 동시에 활성화하자. (LDAP Data, LDAP Group)

7. 관리 > 사이트 환경설정 > LDAP Authentication 항목에 가 보면,
Add Server 탭이 있다. (다른 것은 기본 항목으로 두는 것이 좋다)
이 탭으로 가서 새로운 LDAP 서버를 추가한다. 이전에 준비한 "ldap_server"이다.

    - 이름 항목에는 "ApacheDS (LDAP 서버)"라고 입력하고,
    - LDAP Server 항목에는 "ldap_server" 혹은 IP 주소를 입력하고,
    - LDAP Port 에도 적절한 값을 넣는다. (보통 389 혹은 10389)
    - Login procedure 의 Base DNs:에는 아까 준비한 "ou=drupal6,ou=system" 항목을 넣는다.
    - Advanced configuration 의 DN for non-anonymous search: 항목에는
       과정 3에서 설정한 LDAP 서버의 관리자 계정 ( uid=admin,ou=system ) 을 입력한다.
       암호 입력 항목에는 이전에 입력했던 "adm_pass" 를 저장하자.
       만일 관리자 계정이 여의치 않다면 다른 용도의 익명 접근용 관리계정을 준비하면 된다.
   

8. 관리 > 사이트 환경설정 > LDAP DATA 및 LDAP Groups 항목은
특별히 손대지 않아도 되지만 상황에 따라 조정할 필요가 있다. 여기서는 넘어간다.

9. 드루팔의 로그인 화면에서 test2 / testPassword 로 로그인해 보라.
분명 드루팔에서 아직 한 번도 만들지 않은 계정이지만, 로그인이 잘 될 것이다!!!
게다가 LDAP DATA를 조정하면, 드루팔 계정의 부가 정보도 LDAP 정보와 연동한다.

만일 로그인이 잘 되지 않는다면 뭔가 설정이 잘못된 것이므로,
드루팔의 시스템 로그를 보고 LDAP 연동 문제의 원인을 찾아보면 된다.

* 참고 : 위 LDAP integration 모듈을 이용한 LDAP Directory, LDAP provisioning 모듈도 있다.
* 참고 : OpenID 도 이와 비슷한 역할을 할 수 있다. 하지만 기업 사내용은 주로 LDAP 이다.
* 참고 : LDAP과 SSO (Single Sign-On) 기능도 관련이 있지만 다소 차이가 있다.
SSO는 한번 로그인에 모든 사이트에서 로그인 세션을 유지하는 기술이고,
위에 적힌 LDAP 운용예는 로그인 계정 정보를 통합관리한다는 점이다.
하긴 SSO를 위해서는 기본적으로 LDAP 같은 계정 통합 서비스가 필요하리라?!

Your rating: None 평균 : 4.8 (6 votes)

댓글

이와 비슷하지만

이와 비슷하지만 다소 차이가 있는 SSO(Single Sign On)를 드루팔에 적용하고 싶다면,
아래 모듈을 사용해 보면 어떨까.
http://drupal.org/project/cas

드루팔로 여러

드루팔로 여러 사이트를 동시에 운영하고 있다면,
아래 모듈도 살펴볼 필요가 있을 것 같다.

http://drupal.org/project/multisite_login

Multisite Login allows a user to login to all sites in a multisite configuration, even though the multisites do not share domain names.