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

01.03.25

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Интеграция 1С с Active Directory на LINUX через ldapsearch:
.epf 11,79Kb
9
9 Скачать (6 SM) Купить за 3 350 руб.

Начнем издалека, а именно разберем, что такое 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С v8.3 1C:Бухгалтерия Россия Платные (руб)

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

15000 руб.

10.11.2023    12716    49    33    

71

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 8.3.14 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, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

18000 руб.

06.12.2023    11574    50    8    

80

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

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

14400 руб.

29.04.2020    34441    109    152    

75

Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

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

3600 руб.

06.02.2017    32942    145    18    

51

Архивирование (backup) Инструменты администратора БД Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    74199    629    45    

88

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

Многие сталкиваются с проблемой когда изображения, находящиеся в базе разные по объему и размерам. Менеджеры могут добавить файлы в очень высоком разрешении, объемом свыше 20 Мегабайт. База данных становится слишком большой, выгрузка на сайт идёт медленно и требуется много место на хостинге. Как сжать картинки и уменьшить размер базы 1С? Это можно сделать с помощью данной обработки. Существует возможность выбрать различные варианты для того чтобы уменьшить картинки: в разы, в процентах от первоначального объема, а также сделать картинки одинаковой ширины. В результате размер базы 1С значительно сократится (в зависимости от количества и размера картинок), а изображения станут небольшого объема, равными по ширине, почти без потери качества. Работает на управляемых формах для УТ 11, КА, ERP.

3000 руб.

21.07.2022    10391    10    4    

18

Информационная безопасность Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Предлагается внешняя обработка для просмотра данных в формате ASN1. Есть 2 режима: загрузка из бинарного формата и из BASE64. Реализована функция извлечения всех сертификатов, которые можно найти в ASN1-файле. В дополнении к этому продукту предлагается методическая помощь по вопросам, связанным с технической реализацией криптографии и шифрования в 1С.

2400 руб.

29.08.2016    30288    10    1    

11
Оставьте свое сообщение