Интеграция 1С с Active Directory на LINUX через ldapsearch

13.04.25

Администрирование - Информационная безопасность

Интеграция с Active Directory на Windows не вызывает особых вопросов, по этому вопросу есть множество ресурсов. А что делать, если нужно выгружать информацию в базу, которая работает на сервере приложений под управлением linux? Тут уже не так много информации, в этой статье постараюсь осветить этот вопрос.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Интеграция 1С с Active Directory на LINUX через ldapsearch:
.epf 11,79Kb
21 6 200 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Начнем издалека, а именно разберем, что такое active directory и как он работает.

Итак, Active Directory (AD) — это реализация службы каталогов, представленная централизованной базой данных, которая хранит информацию о пользователях, группах, компьютерах и других ресурсах в сети и используется в операционных системах компании Microsoft. Служба каталогов позволяет значительно облегчить управление сетевыми ресурсами и увеличить защиту корпоративной сети.

В основе работы Active Directory (AD) лежит протокол LDAP. LDAP — это аббревиатура от Lightweight Directory Access Protocol, то есть протокол легкого доступа к каталогам. LDAP также позволяет пользователям получить доступ к ресурсам в зависимости от прав, настроенных администратором службы каталогов.

Каждый из них относится к определённому классу (objectClass) (пользователи, компьютеры, домены и т.д.). В свою очередь все объекты каждого класса имеют одинаковый набор атрибутов.

Пользователь в AD и его атрибуты выглядят следующим образом:

 

 

При работе информационной базы на сервере под управлением windows доступ к AD осуществляется по средством COM-соединения. Например в статье Ильина Михаила описан пример такой интеграции: //infostart.ru/1c/articles/275916/

Полного аналога AD найти на данный момент невозможно. Есть ряд технологий, которые претендуют на конкуренцию с AD: Avanpost Directory Service, Samba DC, ALD Pro, OpenLDAP и другие.

При работе сервера приложений по linux отсутствует возможность создавать COM-объекты, и традиционный поход в интеграции с AD тут не применим. На помощь приходит ldapsearch — утилита для поиска информации в службе каталога, доступной по протоколу LDAP. Далее будут рассмотрены основные возможности этой утилиты и приведен пример загрузки основной информации из AD.

Поскольку ldapsearch — это консольная утилита, необходимо проверить ее наличие в linux и при отсутствии установить командой: sudo apt install ldap-utils

Для поиска информации в AD необходимо воспользоваться командой:

ldapsearch -H ldaps://dc.example.com -D "user@example.com" -w "password" -b "dc=example,dc=com" "(filter)" "attr1" "attr2", где:

-H: адрес запрашиваемого сервера каталогов;

-W: DN пользователя, по которым будет проходить аутентификация. Это будет имя пользователя в AD@ домен;

-b: В какой директории начать поиск. Если известно, в каком подразделении (Organizational Unit ) находятся записи, которые нужно найти, его можно добавить в поиск. Например, если мы знаем, что записи которые мы ищем находятся в OU под названием "stuff", то  строка запроса будет "ou=stuff,dc=example,dc=com". Если неизвестно, в каком OU находятся записи, можно указать просто домен "dc=example,dc=com";

-(filter): фильтр, который будет использоваться для поиска. Например, если хотим найти пользователя с именем IvanovII, то фильтр будет: (sAMAccountName=IvanovII). Если нужно найти всех членов группы cn=usets,ou=stuff,dc=example,dc=com, то необходимо использовать фильтр: (memberOf=cn=usets,ou=stuff,dc=example,dc=com)"

-"attr1":  Атрибуты, которые вы хотите отобразить. Каждый атрибут должен быть разделен пробелом. Некоторые распространенные из них — name mail sAMAccountName telephoneNumber.

Основные атрибуты AD, которые часто требуется получать из AD в 1С:

 

Атрибут Русскоязычное название     Пример
name Полное имя Иванов Иван Викторович
sn Фамилия Иванов
displayName Выводимое имя Иванов Иван Викторович
givenName Имя Иван Викторович
mail Электронная почта пользователя mail@domain.com
sAMAccountName Доменное имя IvanovIV
userPrincipalName Имя входа пользователя IvanovIV@domain.com
memberOf Член групп (в какую группу входит данный пользователь) CN=Группа,OU=Компания,DC=domain,DC=com
telephoneNumber Рабочий номер телефона 1234
manager Руководитель ???

 

Поскольку запрашивать информацию будем на сервере, то пользователь, под которым запущена служба 1С, должен иметь права на чтение в каталоге LDAP.

Далее рассмотрим несколько примеров запросов. Для получения информации будем использовать команды в терминале с выводом в файл и дальнейшим парсингом файла для получения структурированных данных.

- Получить всех пользователей с полным именем, адресом электронной почты, рабочим телефоном и доменным именем: ldapsearch -H ldap://dc.example.com -D user@example.com -w 'password' -b "dc=example,dc=com" "(objectClass=user)" name mail telephoneNumber sAMAccountName

Тут мы наложили фильтр на objectClass=user, чтобы получить результат только по пользователям. Если фильтр не указан, используется фильтр по умолчанию (objectClass=*). В итоге получим следующий результат:

dn:: Q0490JjQstCw0L3QvtCyINCY0LLQsNC9INCS0LjQutGC0L7RgNC+0LLQuNGHLE9V
PdCcLE9VPXN0dWZmLERDPWV4YW1wbGUsREM9Y29t
telephoneNumber: 1234
name:: 0JjQstCw0L3QvtCyINCY0LLQsNC9INCS0LjQutGC0L7RgNC+0LLQuNGH
sAMAccountName: IvanovIV
mail: IvanovIV@example.com

Часть атрибутов возвращается в base64 и требует обратной перекодировки на стороне 1С. 

dn  это уникальное имя (Distinguished Name, DN), которое однозначно идентифицирует запись в пределах леса и представляет собой полный путь от корневой записи AD до рассматриваемого объекта. 

После перекодировки из base64 получаем:

dn:: CN=Иванов Иван Викторович,OU=М,OU=stuff,DC=example,DC=com
telephoneNumber: 1234
name:: Иванов Иван Викторович
sAMAccountName: IvanovIV
mail: IvanovIV@example.com

Значение атрибута записывается в 7-битной кодировке ASCII и отделяется от его имени символом «:». Значения, не подходящие под эту кодировку, записываются в кодировке base64 и отделяются от имени атрибута символами «::»:

атрибут:: base64_значение_атрибута

Следующий пример, который мы рассмотрим, — это отбор записей по нескольким отборам. Например требуется получить атрибуты только по записи, где name=Иванов Иван Викторович, строка запроса будет такой: ldapsearch -H ldap://dc.example.com -D user@example.com -w 'password' -b "dc=example,dc=com" "(&(objectClass=user)(name=Иванов Иван Викторович))" name 

Если в фильтре указать "(&(objectClass=user)(sn=И*))" — то будут отобраны все пользователи, фамилия которых начинается с "И".

Также распространенной задачей является, например, блокировка учетных записей пользователей в информационной базе 1С, если этот пользователь заблокирован в AD. Такую информацию можно получить запросом:  ldapsearch -H ldap://dc.example.com -D user@example.com -w 'password' -b "dc=example,dc=com" "(&(objectClass=user)(useraccountcontrol:66050))".

userAccountControl — является суммой нескольких свойств атрибутов. При этом значение 512 является значением по умолчанию при всех снятых флагах на вкладке "Учетная запись", и каждый дополнительный параметр прибавляется к нему. Ниже представлены примеры комбинаций этих свойств:

512 - Включена (Enabled)
514 (512+2) - Отключена (Disabled)
66048 (512+65536) - Включена, срок действия пароля не ограничен.
66050 (512+65536+2) - Отключена, срок действия пароля не ограничен.

Ниже приведен список основных значений атрибута userAccountControl:

 

Значение Описание
2 Учетная запись отключена
16 Учетная запись заблокирована
32 Пароль не требуется
64 Запретить смену пароля пользователем
512 Учетная запись по умолчанию. Значение указано у обычного пользователя
65536 Срок действия пароля не ограничен
8388608 Пароль пользователя истек

 

К статье добавлена обработка, где реализована загрузка нескольких атрибутов из AD в качестве примера.

В обработке также реализован пример отбора.

 

 

Список использованных источников:

https://www.ispsystem.ru/news/active-directory-ldap

https://mivocloud.com/ru/blog/OpenLDAP-cto-eto-takoe-i-zacem-eto-nujno

https://www.openldap.org/

https://notessysadmin.com/main-attributes-active-directory

https://docs.altlinux.org/ru-RU/domain/10.2/html/samba/ldapsearch.html

Проверено на следующих конфигурациях и релизах:

  • Зарплата и управление персоналом, редакция 3.1, релизы 3.1.31.32

Вступайте в нашу телеграмм-группу Инфостарт

Active directory LDAP ldapsearch OpenLDAP

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    67809    356    164    

312

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    25212    93    46    

102

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 1С 8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.04.2026, версия 1.4.1, работает в 1С:ФРЕШ!

24400 руб.

06.12.2023    22675    80    10    

113

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14640 руб.

29.04.2020    50124    136    162    

92

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Программист Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    1608    2    0    

20

Файловый обмен (TXT, XML, DBF), FTP Поиск данных Инструменты администратора БД Корректировка данных Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная обработка позволит Вам легко и просто, а главное - быстро, выполнить сравнение данных между ЛЮБЫМИ базами (и РИБ, по правилам конвертаций) по контрольным суммам выбранных объектов баз 1С, работающих на платформах 8.3 и выше. Удобный и понятный интерфейс в виде "мастера". Высокая скорость сравнения достигается за счет специального алгоритма расчета контрольной суммы объекта/записи и сравнения по данным суммам объектов 2х баз через файл. Имеется возможность выбора реквизитов, по которым система будет сравнивать объекты. Сравнение количества записей в движениях документов, возможность сравнивать данные по правилам конвертации и не только! Выбор объектов конфигурации для КАЖДОГО узла в отдельности с индивидуальным отбором для каждого объекта конфигурации, работа с FTP, сохранение или загрузка настроек, сохранение или загрузка результата сравнения, регистрация на обмен объекта и его движений. (Обновление от 12.11.2024, версия 2.2-2.5)

24400 руб.

27.10.2017    45911    31    13    

49

Чистка данных Инструменты администратора БД Администрирование 1С 8.3 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Решение представляет собой набор из 6 обработок для 1С по удалению организаций и справочников из базы по фильтрам, документов по фильтрам, универсальное сжатие данных, очистка битых движений регистратора, удаление устаревших регистров сведений, удаление устаревших документов "Электронное письмо входящее" и "Электронное письмо исходящее"

23999 руб.

20.02.2026    1228    1    0    

4
Для отправки сообщения требуется регистрация/авторизация