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 ファイルを用意した。

# Adding organizational units for users and groups
dn: ou=People,dc=mydomain,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=mydomain,dc=com
objectClass: organizationalUnit
ou: Groups

# Adding user1
dn: uid=user1,ou=People,dc=mydomain,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
cn: User One
sn: One
uid: user1
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/user1
loginShell: /bin/bash
userPassword: user1
gecos: User One

# Adding user2
dn: uid=user2,ou=People,dc=mydomain,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
cn: User Two
sn: Two
uid: user2
uidNumber: 1002
gidNumber: 1002
homeDirectory: /home/user2
loginShell: /bin/bash
userPassword: user2
gecos: User Two

# Adding group1 with user1 and user2
dn: cn=group1,ou=Groups,dc=mydomain,dc=com
objectClass: posixGroup
cn: group1
gidNumber: 1001
memberUid: user1
memberUid: user2

# Adding group2 (empty group for now)
dn: cn=group2,ou=Groups,dc=mydomain,dc=com
objectClass: posixGroup
cn: group2
gidNumber: 1002

そしたら ldapadd で追加する。

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

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

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