Skip to content
andyceo edited this page Jun 7, 2022 · 3 revisions

LDAP

Технология 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)

OpenLDAP + phpLDAPadmin

Используются следующие образы:

Настройка аутентификации в приложениях с помощью LDAP

В общем случае, для аутентификации нужно предоставить 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

Ссылки

Sidebar is under construction

Clone this wiki locally