top bar

글 목록

2017년 3월 27일 월요일

[OpenLDAP] 설치와 맛보기 (Mac OS)

1. 시작..!



 LDAP이란... Lightweight Directory Access Protocol의 약자로, TCP/IP 위에서 디렉토리 서비스를 조회하고 수정하는 응용 프로토콜이다 (출처: 위키 백과)

라고 하는데.. 디렉토리 서비스라고 하니까 Zookeeper와 비슷한것 같기도 하고.. 감이 잘 오지 않는다. 마치 콜라병을 들고 어디에 쓰는 물건인고 알쏭달쏭 물음표 만개한 원시인이 된 것 같은 느낌이다.

일단 LDAP이 Zookeeper 와 비슷한 아이디어를 가지고 있다는 가정 하에, 설치해보고 실행해 보았다.


2. 설치



Mac의 OSX는 기본적으로 유닉스 기반의 운영체제이고, 그에따라 우리가 자주 사용하는 리눅스 커맨드(레드헷, 데비안을 통틀어)와 거의 동일한 shell 커맨드를 제공한다.(맥도 bash shell이었나..? 아무튼..)

하지만 레드헷 계열의 소프트웨어 패키지 관리자인 'yum' 과 같은 기능을 제공하지 않기 때문에, 'brew'를 이용하여 설치 해본다. (brew는 여기 참고)

$ brew install openldap

brew install이 끝나면 아래 경로에 설치된다

$ ls -al /usr/local/Cellar/openldap/2.4.43/
total 208
drwxr-xr-x  13 rover  admin    442  3 27 14:38 .
drwxr-xr-x   3 rover  admin    102  3 27 14:38 ..
-rw-r--r--   1 rover  admin  86459 12  1  2015 CHANGES
-rw-r--r--   1 rover  admin   2345 12  1  2015 COPYRIGHT
-rw-r--r--   1 rover  admin    366  3 27 14:38 INSTALL_RECEIPT.json
-rw-r--r--   1 rover  admin   2214 12  1  2015 LICENSE
-rw-r--r--   1 rover  admin   3494 12  1  2015 README
drwxr-xr-x  12 rover  admin    408 12  1  2015 bin
drwxr-xr-x  11 rover  admin    374 12  1  2015 include
drwxr-xr-x  14 rover  admin    476 12  1  2015 lib
drwxr-xr-x   3 rover  admin    102 12  1  2015 libexec
drwxr-xr-x  11 rover  admin    374 12  1  2015 sbin
drwxr-xr-x   3 rover  admin    102 12  1  2015 share


3. 설정



openldap 패키지에 포함되어 있는 'slapd' 라는 데몬을 이용해서 ldap 서버를 기동 하려고 한다.
참고로 slapd은 'Stand alone LDAP Daemon' 의 약자이다.

1) slapd.conf 설정

$ cd /etc/openldap/

위 경로에서 먼저 default값이 정의되어있는 샘플 설정파일의 이름을 바꾼다

$ cp slapd.conf.default slapd.conf

vi 에디터로 설정파일을 열어 보자

$ sudo vi /etc/openldap/slapd.conf

주요 설정은 아래와 같다.

 53 database        bdb
 54 suffix          "dc=asuraiv,dc=com"
 55 rootdn          "cn=Manager,dc=asuraiv,dc=com"
 .
 .
 .
 59 rootpw  secret
 .
 .
 63 directory       /private/var/db/openldap/openldap-data
 64 # Indices to maintain
 65 index   objectClass     eq

다른것들은 어느정도 직관적으로 이해 할 수 있지만, 'dc', 'cn' 과같은 용어들은 좀 낯설다.
이들은 일종의 프로토콜(규약)로서, 'X.500' 이라고 한다.

대략적인 의미는 아래와 같다. 한마디로 말하면 Directory Service에서 하나의 노드를 구성하는
개념이라고 볼 수 있다.

String  X.500 AttributeType
------------------------------
CN      commonName
L       localityName
ST      stateOrProvinceName
O       organizationName
OU      organizationalUnitName
C       countryName
STREET  streetAddress
DC      domainComponent
UID     userid

자세한 용도는 다음에 논의하기로 하자..

rootpw는 기본값인 'secret'으로 되어 있는데, ldap utility중 하나인 'slappassword' 를 사용하여
원하는 비밀번호를 SHA로 인코딩한 후, 설정 할 수 있다

$ slappasswd 
New password: 
Re-enter new password: 
{SSHA}/6go9FN2KA4jS+yBj5EQsCkvXydSj6mZ

 53 database        bdb
 54 suffix          "dc=asuraiv,dc=com"
 55 rootdn          "cn=Manager,dc=asuraiv,dc=com"
 .
 .
 .
 59 rootpw  {SSHA}/6go9FN2KA4jS+yBj5EQsCkvXydSj6mZ
 .
 .
 63 directory       /private/var/db/openldap/openldap-data
 64 # Indices to maintain
 65 index   objectClass     eq


2) ldap.conf 설정

같은 디렉토리에 ldap.conf 파일도 설정하자.

  8 BASE    dc=asuraiv,dc=com
  9 BINDDN  cn=Manager,dc=asuraiv,dc=com
 10 URI     ldap://localhost
 11 
 12 SIZELIMIT       0
 13 TIMELIMIT       0
 14 #DEREF          never
 15 TLS_REQCERT     demand

ldap은 프로토콜이다. 따라서 'ldap://' 프리픽스를 URI설정에 반드시 해 주어야 한다.


4. 구동



$ pwd
/usr/libexec
$ sudo ./slapd -h ldap://localhost -d 50
58d8fc20 @(#) $OpenLDAP: slapd 2.4.28 (Oct  3 2015 17:40:09) $
    root@osx201.apple.com:/Library/Caches/com.apple.xbs/Binaries/Open
LDAP/OpenLDAP-510.30~3/Objects/servers/slapd
58d8fc20 daemon: SLAP_SOCK_INIT: dtblsize=256
58d8fc20 main: Enabling TLS failed; continuing with TLS disabled.
58d8fc20 bdb_monitor_db_open: monitoring disabled; configure monitor 
database to enable
58d8fc20 slapd starting
58d8fc20 daemon: posting com.apple.slapd.startup notification


일단 'slpad starting' 메시지를 확인하면 구동 성공.

이것저것 알아보고 만져보다가 나중에 Spring Security와 연동해볼 생각이다. 하지만 다음 시간에....ㄷㄷ