Аутентификация с Microsoft Active Directory
Аутентификация в REST API возможна через контроллер домена Microsoft Active Directory.
СРК поддерживает интеграцию с Microsoft Active Directory версий 2012 R2 или 2016, развернутой на Microsoft Windows Server 2016.
|
Предварительные условия для аутентификации через контроллер домена
|
Подробнее о настройке контроллера домена MS Active Directory — в Интеграция с Microsoft Active Directory.
1. Выпуск access_token, refresh_token и csrf_token через браузер
Перед авторизацией убедитесь, что все предварительные условия для аутентификации через контроллер домена выполнены.
Для примера будут использованы следующие данные MS AD:
-
Группа контроллера домена:
test_group -
Пользователь контроллера домена :
testuser -
Роль группы: Супервайзер
-
Домен:
RUBACKUP -
Пароль пользователя в контроллере:
P@ssw0rd
Для выпуска пары токенов:
-
Перейдите по адресу
https://<app_host>:<app_port>/api/v1/(Рисунок 1):
-
Перейдите на вкладку «Auth» и выберите эндпоинт
/auth/login. -
Нажмите кнопку «Try it out», заполните payload актуальными данными и нажмите «Execute» (Рисунок 2):
В результате получены access_token,
refresh_token и csrf_token, а также сопутствующая информация о
пользователе, прошедшем авторизацию (Рисунок 3). Сервис
автоматически разместит access_token и refresh_token в cookie-файлах.
В параметре role будет возвращена роль пользователя, которая соответствует роли группы, в которой находится пользователь. Роль группы определяется через ассоциацию групп и ролей. Подробнее о создании ассоциации — в «Интеграция RuBackup со средствами управления доменом Microsoft Active Directory».
2. Выпуск access_token, refresh_token и csrf_token в командной строке
Перед авторизацией убедитесь, что все условия из раздела Предварительные условия для аутентификации через контроллер домена выполнены.
Для примера будут использованы следующие данные MS AD:
-
Группа контроллера домена:
test_group -
Пользователь контроллера домена :
testuser -
Роль группы: Супервайзер
-
Домен:
RUBACKUP -
Пароль пользователя в контроллере:
P@ssw0rd
Чтобы произвести выпуск пары токенов через терминал, необходимо
отправить POST-запрос с помощью консольной утилиты curl или любым другим
удобным способом. В данном примере используется curl:
curl -k -X POST 'https://api.rubackup.local:5656/api/v1/auth/login' \ (1) (2) (3)
--header 'Content-Type: application/json' \ (4)
--data '{
"rubackup_database": "rubackup", (5)
"rubackup_user": "testuser", (6)
"password": "P@ssw0rd", (7)
"auth_type": "domain", (8)
"domain": "RUBACKUP" (9)
}'
| 1 | https://api.rubackup.local — адрес, где запущен rubackup_api |
| 2 | 5656 - порт, который будет использоваться как часть адреса сервера API |
| 3 | /api/v1/auth/login — путь до запроса на авторизацию |
| 4 | --header <argument> - значения, передаваемые в заголовках |
| 5 | rubackup_database — имя служебной базы данных |
| 6 | rubackup_user — имя суперпользователя |
| 7 | password — пароль суперпользователя |
| 8 | auth_type — тип аутентификации (база данных или контроллер домена) |
| 9 | domain — домен для авторизации через контроллер домена |
Результат вернётся в формате JSON:
{
"data": {
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTczNDAxNDMzNCwianRpIjoiZWRjYzY0NzItYTdhOC00MmQ5LWIxNmMtMWE4NzQ2ZTI5NWNkIiwidHlwZSI6ImFjY2VzcyIsInN1YiI6Il9tc19hZF90ZXN0dXNlcl9ydWJhY2t1cCIsIm5iZiI6MTczNDAxNDMzNCwiY3NyZiI6IjE0OGZmMTk4LWM2N2UtNDA5OC1hNzAyLWJlYjhhMTRjN2RmNCIsImV4cCI6MTczNDAxNTIzNCwiZmFtaWx5IjoiaHp0Z3hkcWFobmxncWdidCJ9.5YU2yxGZshimv6kqqgvP-t6ynnhfVxDhlGurcXFHg0s",
"csrf_token": "148ff198-c67e-4098-a702-beb8a14c7df4",
"last_fail_login": null,
"last_success_login": "2024-12-12T17:13:08.305226",
"package_version": "<Версия пакетов>",
"refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTczNDAxNDMzNCwianRpIjoiNTVjYTEzZDQtYzIwMi00MmIxLTlkZjItNDI4MWIwZWRmNGY0IiwidHlwZSI6InJlZnJlc2giLCJzdWIiOiJfbXNfYWRfdGVzdHVzZXJfcnViYWNrdXAiLCJuYmYiOjE3MzQwMTQzMzQsImNzcmYiOiIxNDhmZjE5OC1jNjdlLTQwOTgtYTcwMi1iZWI4YTE0YzdkZjQiLCJleHAiOjE3MzQxMDA3MzQsImZhbWlseSI6Imh6dGd4ZHFhaG5sZ3FnYnQifQ.YRP9Ega1xZbpln56vNzSZWC8LzubabdAFdExD-F3BZQ",
"role": [
"supervisor"
],
"rubackup_server_address": "10.177.xxx.xxx",
"user_name": "_ms_ad_testuser_rubackup"
},
"errors": {},
"is_error": false,
"message": ""
}
Если необходимо получить еще и access_token и refresh_token из cookies,
то в команде curl следует указать опцию --cookie-jar -:
curl -k -X --cookie-jar - POST 'https://api.rubackup.local:5656/api/v1/auth/login' \ (1)
--header 'Content-Type: application/json' \
--data '{
"rubackup_database": "rubackup",
"rubackup_user": "testuser",
"password": "P@ssw0rd",
"auth_type": "domain",
"domain": "RUBACKUP"
}'
| 1 | Добавлена опция --cookie-jar - |
С этой опцией к выводу добавится следующая информация:
#HttpOnly.rubackup.local FALSE / TRUE 0 refresh_token_cookie eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTcxNTE2MDUzNywianRpIjoiYzM4MTE0N2YtNDI0MS00Y2NjLTlhZjYtNDcwODAxMWFmOTRjIiwidHlwZSI6InJlZnJlc2giLCJzdWIiOiJydWJhY2t1cCIsIm5iZiI6MTcxNTE2MDUzNywiY3NyZiI6IjRjOGMzNDU3LTQwMDUtNGM2Yi05NjFjLTBjNTA1OTY3MWUwNiIsImV4cCI6MTcxNTI0NjkzNywiZmFtaWx5IjoieXRqemR4dG1xd212bHlyayJ9.g0aFkoob7jAwZ5Bv6FzbOPo3_Q6y-vBpASqXXk19tyw__ #HttpOnly_.rubackup.local FALSE / TRUE 0 access_token_cookie eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTcxNTE2MDUzNywianRpIjoiODhmNDI0N2QtNjJlMy00ZjFjLTk4NzgtNDY4OTM2YjRlNTJmIiwidHlwZSI6ImFjY2VzcyIsInN1YiI6InJ1YmFja3VwIiwibmJmIjoxNzE1MTYwNTM3LCJjc3JmIjoiNGM4YzM0NTctNDAwNS00YzZiLTk2MWMtMGM1MDU5NjcxZTA2IiwiZXhwIjoxNzE1MTYxNDM3LCJmYW1pbHkiOiJ5dGp6ZHh0bXF3bXZseXJrIn0.nj-UbudgyYqGmopRpK9du9gPaZcn_j0_5yhp0A5DLw8