- Начало работы
- Интеграция
- HTTP API
- Single Sign-On
- OpenID Connect
- RADIUS адаптер
- LDAP адаптер
- Портал самообслуживания
- MULTIFACTOR Directory Sync
- Windows Logon
- Регистрация пользователей
- .NET Core
- 1с-Bitrix24
- 1с-плагин двухфакторной аутентификации
- ADFS
- ASP.NET
- Ansible AWX
- Atlassian Cloud
- BearPass
- Check Point VPN
- Cisco ASA VPN
- Citrix Gateway
- Deckhouse Stronghold
- Exchange ActiveSync
- FortiGate VPN
- HRBOX
- Huawei Cloud
- Huawei VPN
- Ideco
- Infrascope
- Grafana
- Keycloak
- Let's Encrypt Windows Server
- Linux logon (GUI/SSH)
- Linux SSH
- Linux SUDO
- Microsoft Entra ID
- MikroTik L2TP VPN
- NGate VPN
- Network Policy Server (NPS)
- Nextcloud
- OpenVPN
- OpenVPN + AD
- OpenVPN Access Server
- OpenVPN pfSense
- Outlook Web Access (OWA)
- Palo Alto GlobalProtect
- Passwork
- RD Gateway (RDGW)
- Redmine
- Starvault
- Solar SafeInspect
- UserGate VPN
- VMware Horizon Cloud
- VMware Horizon View
- VMware vCloud Director
- VMware vSphere
- Vault
- ViPNET
- Windows VPN
- WordPress
- Yandex.Cloud
- Yandex 360
- Zabbix
- АйТи-Бастион
- Континент 4 VPN
- МТС Линк (бывш. webinar.ru)
- С-Терра VPN
- Точка доступа Wi-Fi
- ФПСУ-IP/Клиент
- Пользовательское соглашение об использовании программного обеспечения «МУЛЬТИФАКТОР»
- Политика в отношении обработки персональных данных при использовании сайта https://multifactor.ru/
- Пользовательское соглашение об использовании мобильного приложения «MULTIFACTOR»
- Политика в отношении обработки персональных данных
- Согласие на обработку персональных данных пользователей сайта https://multifactor.ru/
- Лицензионное соглашение
- Политика оплаты
API управления пользователями
API для управления пользователями (субъектами доступа) в MULTIFACTOR.
Доступ к API
Перед использованием данного API необходимо включить расширенное API в личном кабинете, в разделе «Настройки API» и использовать API Key и API Secret, предоставленные в разделе.
Управление пользователями
Количество пользователей и лицензий
Адрес https://api.multifactor.ru/users/count | метод GET.
Функция для запроса текущей утилизации лицензий в системе MULTIFACTOR.
Пример запроса:
GET https://api.multifactor.ru/users/count
Пример ответа:
{
"model": {
total: 5000, //количество пользователей
limit: 6000 //количество лицензий
},
"success": true,
"message": null
}
Список пользователей
Адрес https://api.multifactor.ru/users | метод GET.
Пример запроса:
GET https://api.multifactor.ru/users
Для поиска конкретного пользователя по логину используйте параметр запроса Identity:
GET https://api.multifactor.ru/users?identity=user@example.com
Для включения в ответ сервера номеров телефонов пользователей (при наличии), используйте параметр запроса withPhones со значением true:
GET https://api.multifactor.ru/users?withPhones=true
Пример ответа:
{
"model": [ //список пользователей
{
"id": "5e3c1058c3a23e55b0579ded", //id пользователя в MULTIFACTOR
"identity": "user@example.com", //логин пользователя в вашей системе
"name": null,
"email": null,
"isEnrolled": true, //второй фактор настроен
"createdAt": "2020-02-06T13:10:48.139Z",
"lastLogin": "2021-06-01T15:42:46.786Z",
"isLocked": false,
"groups": [ //группы, в которых состоит пользователь
"AllUsers",
"Super Admin Web"
],
"authenticators": [ //настроенные способы аутентификации
"Telegram"
],
}
],
"success": true,
"message": null
}
Регистрация пользователя
Адрес https://api.multifactor.ru/users | метод POST.
Пользователи регистрируются автоматически при первом посещении страницы доступа, но также предусмотрен вариант регистрации через API.
Пример запроса:
{
"Identity": "user@example.com", //логин пользователя в вашей системе
"Email": "user@example.com", //e-mail, необязательно
"Phone": null, //телефон, необязательно
"Name": "User Name", //имя, необязательно
"EnrollmentLink": //отправить ссылку для настройки, необязательно
{
"To": "email", //на почту, указанную выше
"Ttl": 90 //со сроком действия 90 минут
},
"Groups": {
"Add": ["Group1 name", "Group2 name"] //добавить пользователя в группы (необязательно)
}
}
Пример ответа: пользователь зарегистрирован
{
"model": {
"id": "5e3c1058c3a23e55b0579ded",
"identity": "user@example.com",
"name": "User Name",
"email": "user@example.com",
"isEnrolled": false,
"createdAt": "2020-03-05T11:55:43.8001916Z",
"lastLogin": null,
"isLocked": false
},
"success": true,
"message": null
}
Изменение данных пользователя
Используется для изменении данных, блокировки и разблокировки пользователя.
V1
Адрес https://api.multifactor.ru/users/{id} | метод PUT.
- Параметр id — идентификатор пользователя.
Используется для изменении данных, блокировки и разблокировки пользователя.
Пример запроса:
{
"Identity": "user@example.com", //если нужно изменить логин
"Name": "User Name", //если нужно изменить имя
"Email": "user@example.com", //если нужно изменить адрес
"IsLocked": true, //если нужно заблокировать
"Groups": {
"Add": ["Group1 name", "Group2 name"], //если нужно добавить пользователя в группы
"Remove": ["Group3 name", "Group4 name"], //если нужно исключить пользователя из групп (необязательно)
}
}
Пример ответа:
{
"model": {
"id": "5e3c1058c3a23e55b0579ded",
"identity": "user@example.com",
"name": "User Name",
"email": "user@example.com",
"isEnrolled": false,
"createdAt": "2020-03-05T11:55:43.8001916Z",
"lastLogin": null,
"isLocked": true
},
"success": true,
"message": null
}
V2
Обновление основных данных пользователя
Адрес https://api.multifactor.ru/v2/users/{id}| метод PUT.
- id — идентификатор пользователя;
Используется модульный подход, формата «Name»: «название модуля», «Value»: «значение модуля» где:
- Identity — логин пользователя;
- Name — имя пользователя;
- Email — почта пользователя.
Пример запроса:
{
"Fields": [
{
"Name": "Identity",
"Value": "new.user@example.com"
},
{
"Name": "Name",
"Value": "Новое Имя"
},
{
"Name": "Email",
"Value": "new.email@example.com"
}
]
Пример ответа:
200 Ok
{
"model": {
"id": "*userId*",
"identity": "new.identity@example.com",
"name": "Новое Имя",
"email": "new.email@example.com"
},
"success": true
}
Важно
В данном запросе недопустимы следующие сценарии:
- Пустой массив Fields
- Недопустимое имя поля (допустимые: только Identity, Name, Email)
- Дубли поля в запросе
- Значение Email должно соответствать формату email
- Identity не может быть пустым
Добавление или обновление метода смс/звонок
Адрес https://api.multifactor.ru/v2/users/{id}/phone | метод POST.
- id — идентификатор пользователя;
- PhoneNumber — номер телефона;
Пример запроса:
{
"PhoneNumber": "+79001234567"
}
Пример ответа:
200 Ok
{
"success": true,
"message": ""
}
Обновление дополнительных полей
Адрес: https://api.multifactor.ru/v2/users/{id}/customfields | Метод: PUT
- Параметр id — идентификатор пользователя.
Логика запроса
- Если поле с указанным именем существует — его значение обновляется.
- Если поле с указанным именем отсутствует — создаётся новое поле.
- Существующие поля, не указанные в запросе, остаются без изменений.
- Имена полей обрабатываются без учёта регистра.
- Поля с пустыми именами игнорируются.
Важно
Если пользователь из внешнего источника (External), то синхронизация каталогов (DirectorySync) должна быть отключена.
Тело запроса:
{
"fields": [
{
"name": "Department",
"value": "Department"
},
{
"name": "Position",
"value": "Developer1234"
}
]
}
Варианты ответов:
Успешное выполнение:
200 Ok
{
"success": true,
"data": {
"customFields": {
"Отдел": "Разработка",
"Должность": "Разработчик",
"Заметка": "Работает над проектом MultiFactor"
}
}
}
Ошибки валидации:
400 BadRequest
{
"message": "validation message",
"traceId": "tradeId"
}
Внутренние ошибки:
200 Ok
{
"success": false,
"message": "*error message*"
}
Удаление дополнительных полей
Адрес: https://api.multifactor.ru/v2/users/{id}/customfields | Метод: DELETE
- Параметр id — идентификатор пользователя.
Логика запроса
- Удаляются только поля, имена которых указаны в запросе.
- Если поле с указанным именем отсутствует — операция игнорируется.
- Если массив пуст — изменения не производятся.
- Имена полей обрабатываются без учёта регистра.
- Поля с пустыми именами игнорируются.
Важно
Если пользователь из внешнего источника (External), то синхронизация каталогов (DirectorySync) должна быть отключена.
Тело запроса:
{
"fieldNames": [
"string"
]
}
Варианты ответов:
Успешное выполнение:
200 Ok
{
"model": {
"id": "685929f66c0f1f6329309339",
"identity": "newidentity2",
"customFields": [
{
"name": "Comment",
"value": "Comment"
}
]
},
"success": true
}
Ошибки валидации:
400 BadRequest
{
"message": "validation message",
"traceId": "tradeId"
}
Внутренние ошибки:
200 Ok
{
"success": false,
"message": "*error message*"
}
Блокировка\Разблокировка пользователя.
Блокировка пользователя:
Адрес https://api.multifactor.ru/v2/users/{id}/lock| метод POST.
Разблокировка пользователя:
Адрес https://api.multifactor.ru/v2/users/{id}/unlock| метод POST.
Параметр id — идентификатор пользователя.
Пример ответа:
200 Ok
{
"message": "User is unlocked/User is locked"
"success": true
}
Добавление пользователя в группы
Адрес https://api.multifactor.ru/v2/users/{id}/groups| метод POST
Параметр id — идентификатор пользователя.
GroupNames — указать название групп.
Пример запроса:
{
"GroupNames": ["Группа1", "Группа2"]
}
Пример ответа:
200 Ok
{
"model": {
"id": "*userId*",
"identity": "user@example.com",
"groups": ["AllUsers", "Группа1", "Группа2"]
},
"success": true
}
Важно
- GroupNames не могут быть пустыми
- Группа с указанным именем должна существовать в личном кабинете
- Нельзя добавить повторно пользователя в системную группу Allusers
Удаление пользователя из групп
Адрес https://api.multifactor.ru/v2/users/{id}/groups| метод DELETE
Пример запроса:
{
"GroupNames": ["Группа2"]
}
Пример ответа:
200 Ok
{
"model": {
"id": "*userId*",
"identity": "user@example.com",
"groups": ["AllUsers", "Группа1"]
},
"success": true
}
Важно
- GroupNames не могут быть пустыми
- Группа с указанным именем должна существовать в личном кабинете
- Нельзя удалить пользователя из системной группы Allusers
V3
Обновление телефона
Адрес: https://api.multifactor.ru/v3/users/{id}/phones | Метод: POST
- Параметр id — идентификатор пользователя.
Логика запроса
- Телефонов нет:
- Пришел корректный список номеров → добавляются номера и включается SMS.
- Пришел
null/пустой запрос → ничего не происходит.
- Телефоны есть:
- Пришел список номеров → происходит синхронизация: удаляются старые номера (отсутствующие в новом списке) и добавляются новые номера.
- Пришел
null/пустой запрос → оставляем текущие номера без изменений.
Тело запроса:
{
"PhoneNumbers": "+79001234567; 89112223344; 9552223344"
}
Варианты ответов:
Успешное выполнение:
200 Ok
{
"success": true,
"message": ""
}
Ошибки валидации:
- Тело запроса не может быть
null PhoneNumbersне может быть пустыми/null- Количество номеров не должно быть больше 5
- One or more phone numbers are incorrect
400 BadRequest
{
"message": "*validation message*",
"traceId": "*traceId*"
}
Удаление пользователя
Адрес https://api.multifactor.ru/users/{id} | метод DELETE.
- Параметр id — идентификатор пользователя.
Пример запроса:
DELETE https://api.multifactor.ru/users/1234567890
Пример ответа:
{
"success": true,
"message": null
}
Ссылка для настройки второго фактора
Адрес https://api.multifactor.ru/users/{id}/enroll | метод POST.
- Параметр id — идентификатор пользователя.
Функция для генерации и отправки на email пользователя ссылки для настройки второго фактора. Если не указать параметр Email, ссылка будет сгенерирована без отправки письма пользователю и возвращена в ответе сервера.
Пример запроса:
{
"Email": "user@example.com", //[опционально] адрес, куда отправить письмо,
"Ttl": 90 //срок действия ссылки (90 минут)
}
Пример ответа:
{
"success": true,
"message": null
}
Управление аутентификаторами
Подключенные способы аутентификации
Адрес https://api.multifactor.ru/users/{id}/authenticators | метод GET.
Параметры:
- id — идентификатор пользователя.
Пример запроса:
GET https://api.multifactor.ru/users/1234567890/authenticators
Пример ответа:
{
"model": {
"Telegram": [
{
"id": "627d3d4f410ae00ede026358",
"name": "User Name"
}
],
"TotpToken": [
{
"id": "627e7ffec027bb87054ea6e3",
"name": "Яндекс.Ключ"
},
{
"id": "627e8041c027bb87054ea6e4",
"name": "Microsoft"
}
],
"HotpToken": [
{
"id": "62829fb2e0270cb2ea95208c",
"name": "YubiKey 1234567"
}
]
},
"success": true,
"message": null
}
Переименование аутентификатора
Адрес https://api.multifactor.ru/users/{id}/authenticators/{type}/{authenticatorid} | метод PUT.
Параметры:
- id — идентификатор пользователя;
- type — способ аутентификации;
- authenticatorid — идентификатор аутентификатора.
Пример запроса:
PUT https://api.multifactor.ru/users/1234567890/authenticators/hotptoken/23456789
Параметры в теле запроса:
{
"Name": "Синий рутокен"
}
Пример ответа:
{
"success": true,
"message": null
}
Удаление аутентификатора
Адрес https://api.multifactor.ru/users/{id}/authenticators/{type}/{authenticatorid} | метод DELETE.
Параметры:
- id — идентификатор пользователя;
- type — способ аутентификации;
- authenticatorid — идентификатор аутентификатора.
Пример запроса:
DELETE https://api.multifactor.ru/users/1234567890/authenticators/telegram/23456789
Пример ответа:
{
"success": true,
"message": null
}
Можно также вызвать данную функцию без указания authenticatorid. В таком случае будут удалены все настроенные аутентификаторы указанного способа.
Пример запроса:
DELETE https://api.multifactor.ru/users/1234567890/authenticators/telegram
Пример ответа:
{
"success": true,
"message": null
}
Регистрация OTP токена
Адрес https://api.multifactor.ru/users/{id}/authenticators/{type} | метод POST.
Параметры:
- id — идентификатор пользователя;
- type — тип токена:
- totptoken — TOTP токен;
- hotptoken — HOTP токен.
Поддерживаемые алгоритмы хэширования:
- TOTP-токен: SHA-1 (6 цифр);
- HOTP-токен: SHA-1, SHA-256, SHA-512 (6 цифр).
Пример запроса:
POST https://api.multifactor.ru/users/1234567890/authenticators/hotptoken
Параметры в теле запроса:
{ //пример регистрации Rutoken OTP
"Name": "Rutoken HOTP", //произвольное название
"Key": "673c7514b68e8f09707cc6a4321aa76673a688d4" //ключ в hex кодировке
}
Еще пример:
{ //пример регистрации YubiKey OTP
"Name": "YubiKey 1234567", //произвольное название
"Key": "9b617117c2a4862f47caf4fb2e4032ac", //ключ в hex кодировке
"PrivateId": "2fc5120aca42" //uid в hex кодировке
}
Пример ответа:
{
"success": true,
"message": null
}
Перемещение OTP токена
Адрес https://api.multifactor.ru/users/{id}/authenticators/{type}/{tokenid} | метод PUT.
Параметры:
- id — идентификатор пользователя;
- type — тип токена:
- totptoken — TOTP токен;
- hotptoken — HOTP токен;
- tokenid — идентификатор токена.
Функция для перемещения OTP токена между пользователями. При перемещении токен открепляется от старого пользователя и прикрепляется в качестве метода аутентификации к целевому пользователю.
Пример запроса:
PUT https://api.multifactor.ru/users/1234567890/authenticators/hotptoken/23456789
Параметры в теле запроса:
{
"user": "1234567890", //идентификатор целевого пользователя
"name": "Белый рутокен" //[опционально] новое название аутентификатора
}
Пример ответа:
{
"success": true,
"message": null
}
Копирование OTP токена
Адрес https://api.multifactor.ru/users/{id}/authenticators/{type}/{tokenId} | метод PATCH.
Параметры:
- id — идентификатор пользователя;
- type — тип токена:
- totptoken — TOTP токен;
- hotptoken — HOTP токен;
- tokenid — идентификатор токена.
Функция для копирования OTP токена исходного пользователя одному или нескольким целевым пользователям. При копировании токен не открепляется у исходного пользователя.
Пример запроса:
PATCH https://api.multifactor.ru/users/1234567890/authenticators/hotptoken/23456789
Параметры в теле запроса:
{
"users": [
"1234567890", //идентификатор целевого пользователя 1
"1234567890" //идентификатор целевого пользователя 2
]
}