LDAP - andyceo/documentation GitHub Wiki
Технология LDAP позволяет создать централизованный каталог ресурсов (в основном пользователей) в организации. Нужен как единая служба аутентификации, чтобы не заводить нового пользователя в каждом проекте (например в Redmine, Jenkins и т.д.)
Здесь в основном будет описана настройка сервера OpenLDAP и веб-панели phpLDAPadmin.
CN commonName
L localityName
ST stateOrProvinceName
O organizationName
OU organizationalUnitName
C countryName
STREET streetAddress
DC domainComponent
UID userid
Источник: RFC2253 (UTF-8 String Representation of Distinguished Names)
Используются следующие образы:
В общем случае, для аутентификации нужно предоставить DN (англ. Distinguished Name, уникальное имя) и пароль к этому DN, который должен храниться в атрибуте userPassword
у данного DN, а также реквизиты доступа к серверу LDAP (хост, порт, и т.п.). Например:
DN: uid=alice,ou=people,dc=wonderland,dc=net
password: secret
-
база для поиска пользователя:
ou=Users,dc=ruware,dc=com
-
фильтр пользователя по
uid
и почтеmail
:(&(objectClass=inetOrgPerson)(|(uid=%s)(mail=%s)))
-
фильтр пользователя только по почте
mail
:(&(objectClass=inetOrgPerson)(mail=%s))
-
DN пользователя (для логина, если приложение не умеет искать в LDAP):
uid=%s,ou=Users,dc=example,dc=com
-
атрибут логина:
uid
-
атрибут имени:
cn
-
атрибут фамилии:
sn
-
атрибут почты:
mail
Можно использовать FreeIPA (Source code | Docker) в качестве сервера и LDAP Account Manager (Source code | Docker) в качестве веб-панели.
Примерный файл docker-compose.yml
для FreeIPA, OpenLDAP от Bitnami и LDAP Account Manager (не тестировалось):
version: '3'
services:
freeipa:
image: freeipa/freeipa-server:centos-8-stream
read_only: true
environment:
- IPA_SERVER_HOSTNAME=freeipa.example.com
volumes:
- /data/freeipa:/data
openldap:
image: docker.io/bitnami/openldap:2.6
environment:
- LDAP_ADMIN_USERNAME=admin
- LDAP_ADMIN_PASSWORD=adminpassword
volumes:
- /data/openldap:/bitnami/openldap
ldapaccountmanager:
image: ldapaccountmanager/lam:7.9
networks:
- ldap
- nginx
environment:
- LDAP_DOMAIN=example.org
- LDAP_SERVER=ldap://openldap:389
ports:
- 8080:80