Выпуск токенов
Перед тем как пользователь сможет обратиться к ресурсам сервера
RuBackup, он должен пройти аутентификацию и получить токены доступа:
access_token
, refresh_token
и csrf_token
.
Сгенерированный access_token будет действовать в течение 15 минут с
момента получения, refresh_token
— 24 часа с момента получения,
csrf_token
действует до перезагрузки сервиса rubackup_api.
По истечении срока жизни access_token его можно перевыпустить с
помощью refresh_token
. Если истек срок жизни refresh_token
, необходимо
перевыпустить новую пару токенов с помощью логина и пароля. После
перезапуска rubackup_api также необходимо перевыпустить новую
пару токенов с помощью логина и пароля.
1. Выпуск токенов в браузере
-
Перейдите по адресу
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-файлах.
Об авторизации через auth_type: domain — в Аутентификация с Microsoft Active Directory.
|
2. Выпуск токенов в командной строке
Чтобы произвести выпуск пары токенов через терминал, необходимо
отправить POST-запрос с помощью консольной утилиты curl
или любым другим
удобным способом. В данном примере используется curl:
curl -k -X POST 'https://api.rubackup.local:5656/api/v1/auth/login' \ (1) (2) (3)
-H 'accept: application/json' \ (4)
-H 'Content-Type: application/json' \ (4)
-d '{
"rubackup_database": "rubackup", \ (5)
"rubackup_user": "rubackup", \ (6)
"password": "Testing12345", \ (7)
"auth_type": "database", \ (8)
"domain": "rubackup" (9)
}'
1 | https://api.rubackup.local — адрес, где запущен rubackup_api |
2 | 5656 - порт, который будет использоваться как часть адреса сервера API |
3 | /api/v1/auth/login — путь до запроса на авторизацию |
4 | -H <argument> - значения, передаваемые в заголовках |
5 | rubackup_database — имя служебной базы данных |
6 | rubackup_user — имя суперпользователя |
7 | password — пароль суперпользователя |
8 | auth_type — тип аутентификации (база данных или контроллер домена) |
9 | domain — домен для авторизации через контроллер домена |
Результат вернётся в формате JSON:
{
"data": {
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTcxNTE1ODc2MCwianRpIjoiNThjZjQ5MDAtZjE5Ni00OTZlLThkZjQtMThmZjlhY2M3Y2QxIiwidHlwZSI6ImFjY2VzcyIsInN1YiI6InJ1YmFja3VwIiwibmJmIjoxNzE1MTU4NzYwLCJjc3JmIjoiNGM4YzM0NTctNDAwNS00YzZiLTk2MWMtMGM1MDU5NjcxZTA2IiwiZXhwIjoxNzE1MTU5NjYwLCJmYW1pbHkiOiJ4cnByeHR3ZHJyZ3FsamN4In0.VK5K6v-0_NxSx42bU5dEMIQAYYzxn-GTxmbjhxXjYSs",
"csrf_token": "4c8c3457-4005-4c6b-961c-0c5059671e06",
"csrf_token": "148ff198-c67e-4098-a702-beb8a14c7df4",
"last_fail_login": "2024-12-11T17:39:43.564638",
"last_success_login": "2024-12-11T17:40:07.036618",
"package_version": "<версия пакетов>",
"refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTcxNTE1ODc2MCwianRpIjoiOTUzZjAxZWYtMTM4Zi00Y2ZhLTg4ODItNGI0NWQ0N2YxM2I2IiwidHlwZSI6InJlZnJlc2giLCJzdWIiOiJydWJhY2t1cCIsIm5iZiI6MTcxNTE1ODc2MCwiY3NyZiI6IjRjOGMzNDU3LTQwMDUtNGM2Yi05NjFjLTBjNTA1OTY3MWUwNiIsImV4cCI6MTcxNTI0NTE2MCwiZmFtaWx5IjoieHJwcnh0d2RycmdxbGpjeCJ9.7TmdI0Cmm4knApNINDoYJuJIYdRlzuuc1hS-1c4Y8Ws",
"role": [
"superuser"
],
"rubackup_server_address": "10.177.xx.xxx",
"user_name": "rubackup"
},
"errors": {},
"is_error": false,
"message": ""
}
Если необходимо получить еще и access_token и refresh_token из cookies,
то curl
следует передать опцию --cookie-jar -
, например:
curl -k --cookie-jar - -X POST 'https://api.rubackup.local:5656/api/v1/auth/login' \ (1)
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"rubackup_database": "rubackup", \
"rubackup_user": "rubackup", \
"password": "Testing12345", \
"auth_type": "database", \
"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