Инструменты пользователя

Инструменты сайта


service:ldap

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
service:ldap [23.08.2024 06:50] – [Использование] viacheslavservice:ldap [28.08.2024 08:47] (текущий) – [Расширение схемы] viacheslav
Строка 4: Строка 4:
  
 ===== Установка ===== ===== Установка =====
 +<code yaml>
 +---
 +services:
 +  openldap:
 +    image: osixia/openldap
 +    container_name: openldap
 +    hostname: openldap.workgroup.test
 +    ports:
 +#      - 389:389
 +      - 636:636
 +    volumes:
 +#      - ./data/schema:/tmp/schema # Для расширения схемы
 +      - ./data/ldap:/var/lib/ldap
 +      - ./data/slapd:/etc/ldap/slapd.d
 +    environment:
 +#      LDAP_SEED_INTERNAL_SCHEMA_PATH: "/tmp/schema" # Для расширения схемы
 +      LDAP_ORGANISATION: "Test LDAP"
 +      LDAP_DOMAIN: "workgroup.test"
 +      LDAP_ADMIN_USERNAME: "admin"
 +      LDAP_ADMIN_PASSWORD: "123456Qwerty"
 +      LDAP_CONFIG_PASSWORD: "123456Config"
 +      LDAP_BASE_DN: "dc=workgroup,dc=test"
 +      LDAP_READONLY_USER: "true"
 +      LDAP_READONLY_USER_USERNAME: "ro_user"
 +      LDAP_READONLY_USER_PASSWORD: "ro_pass"
 +      LDAP_TLS_VERIFY_CLIENT: "try" # Prevent client TLS errors
  
 +  phpldapadmin:
 +    image: osixia/phpldapadmin
 +    container_name: phpldapadmin
 +    hostname: phpldapadmin
 +    ports:
 +      - 6443:443
 +    environment:
 +      PHPLDAPADMIN_LDAP_HOSTS: "openldap"
 +      PHPLDAPADMIN_LDAP_CLIENT_TLS_REQCERT: "never" # Prevent client TLS errors
 +#      PHPLDAPADMIN_HTTPS: "false"
 +    depends_on:
 +      - openldap
  
 +networks:
 +  default:
 +    name: openldap
 +</code>
 ===== Использование ===== ===== Использование =====
 Вход в админку по dn (distinguishedName):\\ Вход в админку по dn (distinguishedName):\\
Строка 16: Строка 58:
 <code bash> <code bash>
 # Поиск с использованием read-only юзера # Поиск с использованием read-only юзера
-ldapsearch -x -H ldap://openldap.workgroup.test -D "cn=user,dc=workgroup,dc=test" -w pass |grep uid:+ldapsearch -x -H ldaps://openldap.workgroup.test -d "dc=workgroup,dc=test" -D "cn=ro_user,dc=workgroup,dc=test" -w ro_pass |grep uid:
 uid: vpupkin uid: vpupkin
 uid: pmokin uid: pmokin
Строка 82: Строка 124:
 <code bash> <code bash>
 # Загрузить пользователей # Загрузить пользователей
-ldapadd -x -H ldap://openldap.workgroup.test -D "cn=admin,dc=workgroup,dc=test" -w 123456Qwerty -f users.ldif+ldapadd -x -H ldaps://openldap.workgroup.test -D "cn=admin,dc=workgroup,dc=test" -w 123456Qwerty -f users.ldif
  
 # Удалить пользователей # Удалить пользователей
Строка 88: Строка 130:
 users=($(cat users.ldif |grep 'dn:')) users=($(cat users.ldif |grep 'dn:'))
 for i in ${users[*]}; do echo -e "$i\nchangeType: delete\n"; done > usersdel.ldif for i in ${users[*]}; do echo -e "$i\nchangeType: delete\n"; done > usersdel.ldif
-ldapmodify -x -H ldap://openldap.workgroup.test -D "cn=admin,dc=workgroup,dc=test" -w 123456Qwerty -f usersdel.ldif+ldapmodify -x -H ldaps://openldap.workgroup.test -D "cn=admin,dc=workgroup,dc=test" -w 123456Qwerty -f usersdel.ldif
 </code> </code>
 https://simp.readthedocs.io/en/latest/user_guide/User_Management/LDAP/OpenLDAP/manage_users.html\\ https://simp.readthedocs.io/en/latest/user_guide/User_Management/LDAP/OpenLDAP/manage_users.html\\
 https://tylersguides.com/guides/openldap-how-to-add-a-user/\\ https://tylersguides.com/guides/openldap-how-to-add-a-user/\\
  
 +===== Расширение схемы =====
 +Схемы, атрибуты и классы, справка: https://www.zytrax.com/books/ldap/ch3/\\
 +[[https://pro-ldap.ru/tr/zytrax/ch6/slapd-config.html#use-schemas|6.1.1.4.2 Добавление/удаление наборов схемы данных в OLC (cn=config)]]
 +
 +Добавление атрибута ''sAMAccountName''. Создаётся файл с расширением ''.schema'', например, ''samaccountname.schema''
 +<code ldif>
 +attributeType ( 1.2.840.113556.1.4.221
 +    NAME 'sAMAccountName'
 +    SYNTAX '1.3.6.1.4.1.1466.115.121.1.15'
 +    SINGLE-VALUE )
 +
 +objectClass ( 1.3.6.1.4.1.4203.666.100.1
 +    NAME 'custom'
 +    SUP top
 +    AUXILIARY
 +    MAY (sAMAccountName) )
 +</code>
 +Положить этот файл в каталог, монтирующийся в контейнер и указанный в ''LDAP_SEED_INTERNAL_SCHEMA_PATH''. После запуска контейнера он будет импортирован.
 +После этого нужно остановить контейнер, закомментировать смонтированный каталог и переменную и запустить контейнер заново. ldif-файл после импорта находится в ''data/slapd/cn=config/cn=schema''.
 +<code ldif>
 +# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
 +# CRC32 646e9291
 +dn: cn={5}samaccountname
 +objectClass: olcSchemaConfig
 +cn: {5}samaccountname
 +olcAttributeTypes: {0}( 1.2.840.113556.1.4.221 NAME 'sAMAccountName' SYNTAX
 + 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
 +olcObjectClasses: {0}( 1.3.6.1.4.1.4203.666.100.1 NAME 'custom' SUP top AUXI
 + LIARY MAY sAMAccountName )
 +structuralObjectClass: olcSchemaConfig
 +entryUUID: 2576b05c-f82a-103e-8395-5dabf1ba3ed8
 +creatorsName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
 +createTimestamp: 20240826190713Z
 +entryCSN: 20240826190713.191090Z#000000#000#000000
 +modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
 +modifyTimestamp: 20240826190713Z
 +</code>
 +
 +Другой более человекообразный вариант: сделать сразу файл ldif
 +<code ldif>
 +dn: cn=custom,cn=schema,cn=config
 +objectClass: olcSchemaConfig
 +cn: custom
 +olcAttributeTypes: ( 1.2.840.113556.1.4.221
 +    NAME 'sAMAccountName'
 +    EQUALITY caseIgnoreMatch
 +    SUBSTR caseIgnoreSubstringsMatch
 +    SYNTAX '1.3.6.1.4.1.1466.115.121.1.15'
 +    SINGLE-VALUE )
 +olcObjectClasses: ( 1.3.6.1.4.1.4203.666.100.1
 +    NAME 'custom'
 +    SUP top
 +    AUXILIARY
 +    DESC 'Custom attributes class'
 +    MAY (sAMAccountName) )
 +</code>
 +Потом скопировать его внутрь контейнера и импортировать. Работает только от рута, через админскую учётку не хватит полномочий.
 +<code bash>
 +docker cp samaccountname.ldif openldap:/tmp
 +docker exec -ti openldap ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/samaccountname.ldif
 +</code>
 +
 +https://www.opennet.ru/docs/RUS/ldap_apacheds/ch6/slapd-config.html#use-schemas\\
 +https://stackoverflow.com/questions/45725124/openldap-samaccountname-as-custom-attribute\\
 +
 +FIXME Как добавить ещё один AttributeType в тот же ObjectClass - вопрос. Вроде бы AttributeType добавляется без проблем, но потом надо модифицировать ObjectClass так, чтобы он включал в себя этот атрибут. В чудесном мире LDAP это вроде бы делается удалением и повторным добавлением ObjectClass.
 +
 +Вот это добавляется, теперь надо включить его в ранее добавленный objectClass "custom".
 +<file ldif customattr.ldif>
 +
 +dn: cn=extensionAttribute1,cn=schema,cn=config
 +objectClass: olcSchemaConfig
 +cn: extensionAttribute1
 +olcAttributeTypes: ( 1.2.840.113556.1.2.423 NAME 'extensionAttribute1'
 +        DESC 'extensionAttribute1'
 +        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
 +        SINGLE-VALUE )
 +        
 +</file>
 +https://www.ibm.com/support/pages/adding-custom-attribute-inetorgperson-objectclass-may-attribute\\
 ===== Ошибки ===== ===== Ошибки =====
 ==== Невозможно работать по LDAPS ==== ==== Невозможно работать по LDAPS ====
service/ldap.1724395839.txt.gz · Последнее изменение: 23.08.2024 06:50 — viacheslav

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki