Аутентификация с Microsoft Active Directory
Аутентификация в REST API возможна через контроллер домена Microsoft Active Directory.
СРК поддерживает интеграцию с Microsoft Active Directory версий 2012 R2 или 2016, развернутой на Microsoft Windows Server 2016.
Предварительные условия для аутентификации через контроллер домена
|
Подробнее о настройке контроллера домена MS Active Directory — в «Интеграция RuBackup со средствами управления доменом 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