- Технологический стек
- Установка и настройка MULTIDIRECTORY
- Настройка Kerberos в WEB-интерфейсе MULTIDIRECTORY
- Настройка DNS в WEB-интерфейсе MULTIDIRECTORY
- Настройка доверия в MULTIDIRECTORY
- Групповые политики
- Подключение MULTIFACTOR SelfService Portal к MULTIDIRECTORY
- Управление пользователями, группами и ресурсами
- Подключение к MULTIFACTOR
- Политики доступа
- Схема LDAP
- Журналирование событий
- Парольные политики
- Роли и полномочия
- LDAP-аутентификация в Пассворк
- LDAP-аутентификация в Ansible AWX
- LDAP-аутентификация в ArgoCD
- LDAP-аутентификация в Authelia
- LDAP-аутентификация в BearPass
- LDAP-аутентификация в DeepMail
- LDAP-аутентификация в ELMA365
- LDAP-аутентификация в FreePBX
- LDAP-аутентификация в GitLab
- LDAP-аутентификация в Grafana
- LDAP-аутентификация в IVA MCU
- LDAP-аутентификация в Jenkins
- LDAP-аутентификация в Jira
- LDAP-аутентификация в Keycloak
- LDAP-аутентификация в Kerio Connect
- LDAP-аутентификация в Kibana
- LDAP-аутентификация в Harbor
- LDAP-аутентификация в S3 MinIO
- LDAP-аутентификация в Nexus
- LDAP-аутентификация на Nextсloud
- LDAP-аутентификация на OpenVPN
- LDAP-аутентификация на ownCloud
- LDAP-аутентификация в PostgreSQL
- LDAP-аутентификация в Rancher
- LDAP-аутентификация в RuPost
- LDAP-аутентификация в Seafile
- LDAP-аутентификация в Snipe-IT
- LDAP-аутентификация на SSH клиенте
- LDAP-аутентификация в TrueConf
- LDAP-аутентификация на UserGate клиенте
- LDAP-аутентификация в Vault
- LDAP-аутентификация в Zabbix
- LDAP-аутентификация в Zimbra
Инструкция по API MULTIDIRECTORY
Объединённая инструкция по использованию API MULTIDIRECTORY.
Основана на старой документации и дополнена новыми возможностями.
Общие сведения об API
Для взаимодействия используются HTTP-методы:
GET— для получения информацииPOST— для создания сущностиPUT— для изменения сущностиDELETE— для удаленияPATCH— для частичного изменения сущности
Примечание!
Для подключения к API вашей
MULTIDIRECTORYукажите ссылку в таком виде:
- https://адрес_MultiDirectory/api/docs
- https://адрес_MultiDirectory/api/redoc
Аутентификация
Токен аутентификации
POST /api/auth/token/get
Примечание
Логин передается в форматах:
- DN
- UPN
- sAMAccountName
Пример запроса для получения токена аутентификации:
{
"username": "<string>",
"password": "<string>"
}
Пример ответа.
{
"access_token": "123",
"refresh_token": "456",
"type": "bearer"
}
Время жизни токенов:
- access_token – 20 минут
- refresh_token – 14 суток
Новая версия
POST /auth/– вход (username, password), возвращает cookie + сессиюDELETE /auth/– выходGET /auth/me– данные текущего пользователяPATCH /auth/user/password– сброс пароляGET /auth/setup– проверка необходимости первичной настройкиPOST /auth/setup– выполнение первичной настройки (структура + политики)
LDAP API
Основные операции доступны в обоих API.
Создание объекта
POST /entry/add
Пример запроса для создания объектов:
{
"entry": "ou=your_ou,ou=users,dc=your.domain,dc=ru",
"attributes": [
{
"type": "objectClass",
"vals": [ "top", "container", "organizationUnit" ]
}
],
"password": "you_password"
}
Описание
entry — Distinguished Name (DN) создаваемой записи. attributes — массив объектов, каждый описывает атрибут LDAP-записи
- type: название атрибута LDAP-записи
- vals: массив значений для атрибута [«top», «container», «organizationUnit»] задают иерархию и возможности записи.
password — пароль для записи, если она представляет пользователя с доступом.
Обновление объекта
Пример запроса для обновления:
PATCH /entry/update
{
"object": "cn=your.object,ou=users,dc=your_domain,dc=ru",
"changes": [
{
"operation": 0,
"modification": {
"type": "office",
"vals": [ "TEST" ]
}
},
{
"operation": 1,
"modification": {
"type": "memberOf",
"vals": [ "cn=old.group,ou=groups,dc=your_domain,dc=ru" ]
}
},
{
"operation": 2,
"modification": {
"type": "description",
"vals": [ "Updated description" ]
}
}
]
}
Описание
object — DN объекта, над которым выполняются изменения (например, пользователь).
Первый блок (operation: 0) добавляет новый атрибут office со значением «TEST».
Второй блок (operation: 1) удаляет у объекта членство в группе
cn=old.group,ou=groups,dc=your_domain,dc=ruчерез атрибут memberOf.Третий блок (operation: 2) заменяет существующее значение атрибута description на «Updated description».
Удаление объекта
Пример запроса для удаления объекта:
DELETE /entry/delete
{
"entry": "cn=your.object,ou=users,dc=your_domain,dc=ru"
}
Описание
entry — DN объекта, который нужно удалить (например, пользователь или группа).
Поиск объектов
Пример запроса для поиска объекта:
POST /entry/search
{
"base_object": "ou=users,dc=your_domain,dc=ru",
"scope": 1,
"deref_aliases": 0,
"size_limit": 10,
"time_limit": 0,
"types_only": false,
"filter": "(objectClass=user)",
"attributes": [
"cn",
"mail",
"sAMAccountName",
"memberOf"
],
"page_number": 1
}
Описание
base_object — DN с которого начинается поиск (например, ou=users,dc=your_domain,dc=ru).
scope:
- 0 = base (только объект),
- 1 = one (один уровень),
- 2 = sub (включая все вложенные).
filter — LDAP-фильтр (например, (objectClass=user) или (cn=john*)).
attributes — список атрибутов, которые хотим получить.
page_number — для постраничного вывода.
Bulk-операции
Bulk-операции — это методы API, которые позволяют выполнять однотипное действие сразу над несколькими объектами в каталоге за один запрос.
Пример запроса для массового обновление объектов:
PATCH /entry/update_many
{
"objects": [
"cn=user1,ou=users,dc=your_domain,dc=ru",
"cn=user2,ou=users,dc=your_domain,dc=ru"
],
"changes": [
{
"operation": 2,
"modification": {
"type": "description",
"vals": [ "Updated in bulk" ]
}
}
]
}
Описание
objects — список DN объектов, к которым применяются изменения.
operation: 2 (replace) — замена значения атрибута.
type — имя атрибута (например, description).
vals — новое значение.
Пример запроса для массового удлаения объектов:
POST /entry/delete_many– массовое удаление объектов
{
"entries": [
"cn=olduser1,ou=users,dc=your_domain,dc=ru",
"cn=olduser2,ou=users,dc=your_domain,dc=ru",
"cn=oldgroup,ou=groups,dc=your_domain,dc=ru"
]
}
Описание
entries — список DN объектов, которые нужно удалить.
Kerberos API
Настройка каталога для KDC/kadmin
Пример запроса для настройки KDC/kadmin:
POST /kerberos/setup/tree
{
"trusted_domain": "string",
"trusted_kdc_addr": "string",
"service_princ_password": "string"
}
Описание
trusted_domain — домен, которому будет доверять Kerberos (например, YOUR.DOMAIN.RU).
trusted_kdc_addr — адрес KDC-сервера доверенного домена (обычно FQDN или IP).
service_princ_password — пароль сервисного principal для связи между каталогами.
Генерации keytab
Пример запроса для генерации keytab:
POST /kerberos/ktadd– генерация keytab
[ "string" ]
Описание
Массив строк, где каждая строка — это имя principal, для которого нужно сгенерировать keytab.
Примеры (
string) principals:
HTTP/server1.your_domain.ru@YOUR.DOMAIN.RU— для веб-сервера.ldap/server2.your_domain.ru@YOUR.DOMAIN.RU— для LDAP-сервиса.
Добавления principal
Пример запроса для добавления principal:
POST /kerberos/principal/add– добавить principal
{
"primary": "string",
"instance": "string"
}
Описание
primary — имя principal (обычно это пользователь или сервис, напр. user1).
instance — уточнение/роль (например, admin, host/server1).
Полное имя principal формируется как primary/instance@REALM.
- Пример: user1/admin@YOUR.DOMAIN.RU
Удаления principal
Пример запроса для удаления principal:
DELETE /kerberos/principal/delete– удалить principal
{
"principal_name": "string"
}
Описание
principal_name — полное имя principal, который нужно удалить (включая realm).
- Пример:
principal_name: «user1/admin@YOUR.DOMAIN.RU»
POST /kerberos/setup– настройка KDC сервераPOST /kerberos/setup/trust– настройка доверияGET /api/kerberos/status– статус KerberosPATCH /kerberos/principal/rename– переименовать principalPATCH /kerberos/principal/reset– сброс пароля principal
DNS API
Настройка DNS
Пример запроса для настройки DNS (зоны):
POST /dns/setup
{
"dns_status": "0",
"domain": "string",
"dns_ip_address": "198.51.100.42",
"tsig_key": "string"
}
Описание
dns_status — состояние DNS-сервиса (обычно «0» = выключен, «1» = включен).
domain — домен, для которого настраивается зона (например, md.ru).
dns_ip_address — IP-адрес DNS-сервера.
tsig_key — TSIG-ключ для защищённых обновлений DNS-записей.
Управление DNS-записями
Пример запроса для управление DNS-записями:
GET/POST/DELETE/PATCH /dns/record
{
"record_name": "string",
"record_type": "string",
"zone_name": "string",
"record_value": "string",
"ttl": 0
}
Описание
record_name — имя записи (например, www, mail).
record_type — тип DNS-записи (A, AAAA, CNAME, MX, TXT, SRV).
zone_name — имя зоны, к которой принадлежит запись (md.ru).
record_value — значение записи (например, IP-адрес или доменное имя).
ttl — время жизни записи в секундах (time-to-live).
Управление DNS-зонами
Пример запроса для управление DNS (зонами):
GET/POST/DELETE/PATCH /dns/zone
[
{
"name": "string",
"type": "master",
"records": [
{
"type": "string",
"records": [
{
"name": "string",
"value": "string",
"ttl": 0
}
]
}
]
}
]
Описание
name — имя зоны (например, example.com).
type — тип зоны (master, slave, forward).
records — список записей в зоне.
type — тип записи (например, A, MX).
records.name — имя записи (например, www).
records.value — значение записи (IP или FQDN).
records.ttl — TTL для записи.
Добавление DNS-зоны
Пример запроса для добавление DNS (зоны):
POST /dns/zone
{
"zone_name": "string",
"zone_type": "master",
"nameserver": "string",
"params": [
{
"name": "acl",
"value": "string"
}
]
}
Описание
zone_name — имя зоны (md.ru).
zone_type — тип зоны (master, slave, forward).
nameserver — основной NS-сервер для зоны.
params — дополнительные параметры:
name — тип параметра (например, acl, forwarders).
value — значение (например, IP разрешённых вторичных DNS).
Перезапуск DNS-зоны
Пример запроса для перезагрузки DNS зоны:
GET /dns/zone/reload/
{
"zone_name": "string"
}
Описание
zone_name — имя зоны, которая должна быть перезагружена (например, при изменении записей).
GET/PATCH /dns/server/options– опции сервераGET /dns/server/restart– перезапуск сервера DNSGET /dns/status– статус сервиса DNSGET /dns/zone/forward– список forward-зонPOST /dns/forward_check– проверка forward-зоны
Сетевые политики
Добавление сетевой политики
Пример запроса для добавления сетевой политики:
POST /policy
{
"netmasks": [
"172.0.0.0/8"
],
"name": "local network",
"priority": 2,
"groups": [],
"mfa_status": 0,
"mfa_groups": [],
"is_http": true,
"is_ldap": true,
"is_kerberos": true,
"bypass_no_connection": true,
"bypass_service_failure": true,
"http_session_ttl": 0,
"ldap_session_ttl": 0
}
Описание
netmasks — список подсетей (CIDR), на которые действует политика.
- Пример:
172.0.0.0/8— все адреса в диапазоне 172…*name — имя политики (человекочитаемое, например «local network»).
priority — приоритет политики (меньшее значение = выше приоритет).
groups — список групп пользователей, на которых распространяется политика (если пусто — для всех).
mfa_status — статус MFA (многофакторной аутентификации):
0— выключено1— включено для выбранных групп2— включено для всехmfa_groups — список групп, для которых требуется MFA (если mfa_status = 1).
is_http — применять ли политику к HTTP-протоколу.
is_ldap — применять ли политику к LDAP-протоколу.
is_kerberos — применять ли политику к Kerberos.
bypass_no_connection — разрешать ли доступ, если нет соединения с сервисом.
bypass_service_failure — разрешать ли доступ, если сервис недоступен/ошибка.
http_session_ttl — время жизни HTTP-сессии в секундах (0 = по умолчанию).
ldap_session_ttl — время жизни LDAP-сессии в секундах (0 = по умолчанию).
DELETE /policy/{policy_id}– удалить политикуPATCH /policy/{policy_id}– включить/выключитьPOST /policy/swap– поменять приоритеты
Schema API
Создание атрибута
Пример запроса для создания атрибута:
POST /schema/attribute_type
{
"oid": "string",
"name": "string",
"syntax": "string",
"single_value": true,
"no_user_modification": true,
"is_system": true
}
Описание
oid — уникальный идентификатор атрибута (OID).
name — имя атрибута (например, customAttribute).
syntax — тип данных (например, Directory String, Integer).
single_value — если true, то только одно значение (иначе допускаются множественные).
no_user_modification — если true, то атрибут нельзя изменять.
is_system — системный ли это атрибут (обычно false для пользовательских).
Удаление атрибутов
Пример запроса для удаления несколько атрибутов:
POST /schema/attribute_types/delete
{
"attribute_types_names": [
"string"
]
}
Описание
attribute_types_names — список имён атрибутов, которые нужно удалить.
Удаление класса объектов
Пример запроса для удаления класса (массовое):
POST /schema/object_class/delete
{
"object_classes_names": [
"string"
]
}
Описание
object_classes_names — список имён objectClass, которые нужно удалить.
Создание класса объектов
Пример запроса для создания класса объектов:
POST /schema/object_class
{
"oid": "string",
"name": "string",
"superior_name": "string",
"kind": "STRUCTURAL", # STRUCTURAL, AUXILARY, ABSRTART.
"is_system": true,
"attribute_type_names_must": [
"string"
],
"attribute_type_names_may": [
"string"
]
}
Описание
oid — уникальный идентификатор objectClass (OID).
name — имя objectClass (например, customObjectClass).
superior_name — базовый класс, от которого наследуется (обычно top).
kind — тип класса:
STRUCTURAL— структурный (создаёт объекты в каталоге),AUXILARY— вспомогательный (добавляет свойства),ABSTRACT— абстрактный (используется как основа).is_system — системный ли это класс.
attribute_type_names_must — список обязательных атрибутов.
attribute_type_names_may — список необязательных атрибутов.
Лицензии
Загрузка лицензии
Пример запроса для загрузки лицензии:
POST /lic/
{
"company_name": "name_Multidirectory",
"license_key": "key",
"domain": "domain_Multidirectory",
"signature_valid": true,
"max_users": 500,
"issued_date": "2025-06-17",
"valid_from": "2025-06-17",
"valid_to": "2026-06-17",
"active_users": 1,
"is_active": true
}
Описание
company_name — название компании, для которой выдана лицензия.
license_key — ключ лицензии.
domain — домен, к которому привязана лицензия.
signature_valid — флаг проверки подлинности лицензии (цифровая подпись).
max_users — максимально допустимое количество пользователей.
issued_date — дата выдачи лицензии.
valid_from — дата начала действия.
valid_to — дата окончания действия.
active_users — текущее количество активных пользователей.
is_active — статус лицензии (активна/не активна).
GET /lic/ – получить лицензию
Аудит
GET /audit/policies– список политик аудитаPUT /audit/policy/{id}– обновление политики аудитаGET /audit/destinations– список направлений аудитаPOST /audit/destination– создать новое направлениеPUT/DELETE /audit/destination/{id}– изменить или удалить
Сессии
GET /sessions– список активных пользователейDELETE /sessions/{upn}– данные/удаление сессий по пользователюGET/DELETE /sessions/{upn}– удалить конкретную сессиюGET /sessions/ip/{ip}– список сессий по IP
Многофакторная аутентификация (MFA)
POST /multifactor/setup– задать параметры MFADELETE /multifactor/keys– удалить MFA данныеPOST /multifactor/get– получить MFA кредыPOST /multifactor/create– callback для MFAPOST /multifactor/connect– инициировать двухфакторную аутентификацию