Инструкция по API MultiDirectory
Объединённая инструкция по использованию API MultiDirectory.
Основана на старой документации и дополнена новыми возможностями (beta).
Общие сведения об API
Ознакомиться с более подробным API MULTIDIRECTORY вы можете по ссылкам ниже:
Для взаимодействия используются 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-записей.