1. 시작..!
라고 하는데.. 디렉토리 서비스라고 하니까 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와 연동해볼 생각이다. 하지만 다음 시간에....ㄷㄷ