Docker で LDAP サーバーを構築する

 
WSL 上で素早く LDAP のテストをする必要があったのでメモ。

osixia/openldap のコンテナを使う。

まずは ldap-utils をインストールする。

sudo apt install ldap-utils

それから Docker container を起動

docker run --name my-openldap-container -p 389:389 -p 636:636 --env LDAP_ORGANISATION="My Org" --env LDAP_DOMAIN="mydomain.com" --env LDAP_ADMIN_PASSWORD="admin" -d osixia/openldap:latest

起動したら ldapsearch で動作確認

ldapsearch -x -H ldap://localhost -b "dc=mydomain,dc=com" -D "cn=admin,dc=mydomain,dc=com" -w admin

結果が帰ってくればOK.

試しにエントリーを追加。
こんな all.ldif ファイルを用意した。

version: 1

dn: dc=ldap,dc=mydomain,dc=com
objectClass: top
objectClass: domain
dc: ldap

dn: ou=groups,dc=ldap,dc=mydomain,dc=com
objectClass: top
objectClass: organizationalUnit
ou: groups

dn: ou=users,dc=ldap,dc=mydomain,dc=com
objectClass: top
objectClass: organizationalUnit
ou: users

dn: cn=grp1,ou=groups,dc=ldap,dc=mydomain,dc=com
objectClass: posixGroup
objectClass: top
cn: grp1
gidNumber: 100
memberUid: user1
memberUid: user2

dn: cn=grp2,ou=groups,dc=ldap,dc=mydomain,dc=com
objectClass: posixGroup
objectClass: top
cn: grp2
gidNumber: 101
memberUid: user2

dn: uid=user1,ou=users,dc=ldap,dc=mydomain,dc=com
objectClass: shadowAccount
objectClass: posixAccount
objectClass: account
objectClass: top
cn: user1
gidNumber: 100
homeDirectory: /home/user1
uid: user1
uidNumber: 1001
gecos: user1
loginShell: /bin/bash
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0
userPassword: user1

dn: uid=user2,ou=users,dc=ldap,dc=mydomain,dc=com
objectClass: shadowAccount
objectClass: posixAccount
objectClass: account
objectClass: top
cn: user2
gidNumber: 100
homeDirectory: /home/user2
uid: user2
uidNumber: 1002
gecos: user2
loginShell: /bin/bash
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0
userPassword: user2

そしたら ldapadd で追加する。

ldapadd -x -D "cn=admin,dc=mydomain,dc=com" -w admin -f all.ldif -H ldap://localhost

そして ldapsearch で結果が帰ってくれば OK.