Issue / Problem Statements
To setup a proper LDAP Server may require some LDAP knowledge and experience. So how to setup a LDAP in a quick (say <10mins) and easy way becomes obvious requirement.
Solution:
Highlights:
- Use Docker
- OpenLDAP
- With sample data (which can be customized of course) pre-loaded
- Provide sample `ldapsearch`
Steps:
1. Prepare users and group data, the *.ldif files
$ mkdir testdata $ cat testdata/1-users.ldif dn: ou=people,dc=bright,dc=com ou: people description: All people in organisation objectclass: organizationalunit # admin1 dn: cn=admin1,ou=people,dc=bright,dc=com objectClass: inetOrgPerson sn: admin1 cn: admin1 uid: admin1 mail: admin1@bright.com # secret userPassword: {SSHA}RRN6AM9u0tpTEOn6oBcIt9X3BbFPKVk5 # admin2 dn: cn=admin2,ou=people,dc=bright,dc=com objectClass: inetOrgPerson sn: admin2 cn: admin2 uid: admin2 mail: admin2@bright.com # secret userPassword: {SSHA}RRN6AM9u0tpTEOn6oBcIt9X3BbFPKVk5 # developer dn: cn=developer1,ou=people,dc=bright,dc=com objectClass: inetOrgPerson sn: developer1 cn: developer1 mail: developer1@bright.com userPassword: {SSHA}RRN6AM9u0tpTEOn6oBcIt9X3BbFPKVk5 $ cat testdata/2-groups.ldif dn: ou=groups,dc=bright,dc=com objectClass: organizationalUnit ou: groups dn: cn=admins,ou=groups,dc=bright,dc=com objectClass: groupOfNames cn: admins member: cn=admin1,ou=people,dc=bright,dc=com member: cn=admin2,ou=people,dc=bright,dc=com dn: cn=developers,ou=groups,dc=bright,dc=com objectClass: groupOfNames cn: developers member: cn=admin1,ou=people,dc=bright,dc=com member: cn=developer1,ou=people,dc=bright,dc=com
2. Start It Up
$ docker run --name my-openldap-container \ --env LDAP_ORGANISATION="Bright Inc" \ --env LDAP_DOMAIN="bright.com" \ --env LDAP_ADMIN_PASSWORD="secret" \ --volume "$(pwd)"/testdata:/container/service/slapd/assets/config/bootstrap/ldif/custom \ -p 10389:389 \ --detach \ osixia/openldap:1.2.2 --copy-service --loglevel debug
Now the LDAP service is exposed from container port 389 to local port 10389.
Note: to clean it up, use below command:
$ docker stop $(docker ps -aqf "name=my-openldap-container") && \ docker rm $(docker ps -aqf "name=my-openldap-container")
3. Test It Out
$ ldapsearch -LLL -x \ -H ldap://localhost:10389 \ -D "cn=admin,dc=bright,dc=com" -w secret \ -b 'dc=bright,dc=com' \ dn dn: dc=bright,dc=com dn: cn=admin,dc=bright,dc=com dn: ou=people,dc=bright,dc=com dn: cn=admin1,ou=people,dc=bright,dc=com dn: cn=admin2,ou=people,dc=bright,dc=com dn: cn=developer1,ou=people,dc=bright,dc=com dn: ou=groups,dc=bright,dc=com dn: cn=admins,ou=groups,dc=bright,dc=com dn: cn=developers,ou=groups,dc=bright,dc=com $ ldapsearch -LLL -x \ -H ldap://localhost:10389 \ -D "cn=admin,dc=bright,dc=com" -w secret \ -b 'dc=bright,dc=com' \ '(&(objectClass=groupOfNames)(member=cn=admin2,ou=people,dc=bright,dc=com))' \ cn dn: cn=admins,ou=groups,dc=bright,dc=com cn: admins
That's it. Hope it helps!
No comments:
Post a Comment