Получение токена доступа Keystone
Токен доступа используется для аутентификации в сервисах VK Cloud через REST API с использованием Keystone. Примеры использования токена:
- просмотр логов в сервисе Cloud Logging;
- работа с публичным DNS.
Чтобы получить токен доступа:
-
Перейдите в личный кабинет VK Cloud.
-
Убедитесь, что включена двухфакторная аутентификация и активирован доступ по API.
-
Выберите проект, в котором планируется использовать токен.
-
Получите данные проекта и пользователя, для которого генерируется токен:
- В личном кабинете перейдите в раздел Настройки проекта.
- Нажмите кнопку Скачать openrc версии 3. Будет загружен файл вида
<название проекта>-openrc.sh
.
-
Загрузите данные, полученные на предыдущем шаге, в переменные окружения.
- Linux
- Windows
- Запустите скачанный файл:
source <название проекта>-openrc.sh
- Введите пароль для пользователя в появившемся окне.
-
Выполните команду с помощью утилиты
curl
:- Linux
- Windows
1curl -X POST \ 2-H "Content-Type: application/json" \ 3-d '{ 4 "auth": { 5 "identity": { 6 "methods": [ 7 "password" 8 ], 9 "password": { 10 "user": { 11 "domain": { 12 "id": "'$OS_USER_DOMAIN_NAME'" 13 }, 14 "name": "'$OS_USERNAME'", 15 "password": "'$OS_PASSWORD'" 16 } 17 } 18 }, 19 "scope": { 20 "project": { 21 "id": "'$OS_PROJECT_ID'", 22 "region": "'$OS_REGION_NAME'" 23 } 24 } 25 } 26}' \ 27-i "https://infra.mail.ru:35357/v3/auth/tokens"
Кроме curl
вы можете использовать и другие инструменты для получения токена.
Пример ответа на запрос получения токена
1HTTP/1.1 201 Created 2 3date: Wed, 18 Jan 2023 15:02:04 GMT 4server: Apache/2.4.6 (CentOS) mod_wsgi/3.4 Python/2.7.5 5 6X-Subject-Token: XXXXXXXXXnsH_iUvos_UFSveInsHgPAKnBefJn_TghGVIBjDEDo4vLYU9xWnDrVIBp3el87i5vtrknja14Gcgc9uTgXdRyr3hm8isz8iAPp5FEq27-WLZQAwfhCfGB4sNdlpAjWYZrNYmUbglgqzoTqqwQXXXXXXX 7 8vary: X-Auth-Token 9x-openstack-request-id: req-7de8bc92-0000-0000-0000-906e6e63f956 10content-length: 322 11content-type: application/json 12set-cookie: PROXYSRV_ADMIN=acadfd0285XXXXXX|XXXXX|XXXXX; path=/; Secure 13connection: close 14 15{"token": {"issued_at": "2023-01-18T15:02:04.000000Z", "audit_ids": ["XXXX-iu5TeiUOU66VNO_-g"], "methods": ["password"], "expires_at": "2023-01-18T16:02:04.000000Z", "user": {"password_expires_at": null, "domain": {"id": "users", "name": "users"}, "id": "00000000000000XXX", "name": "example@example.ex"}}}
Для выполнения дальнейших HTTP-запросов через REST API на платформе VK Cloud используйте значение параметра X-Subject-Token
.
Сгенерированный токен действителен в течение одного часа.
Задача: получить список сетей через REST API (сервис Neutron).
-
В личном кабинете посмотрите эндпоинт, по которому выполняется запрос к сервису Neutron. В данном примере это
https://infra.mail.ru:9696
. -
Сгенерируйте токен и скопируйте значение параметра
X-Subject-Token
. -
Выполните команду с помощью утилиты
curl
:curl https://infra.mail.ru:9696/v2.0/networks -H "Accept: application/json" -H "X-Auth-Token: <токен, сгенерированный на предыдущем шаге>"
Пример результата
1{ 2 "networks": [ 3 { 4 "ipv6_address_scope": null, 5 "dns_domain": null, 6 "revision_number": 6, 7 "port_security_enabled": true, 8 "id": "0e4d7c1e-ba20-0000-0000-7623648487a6", 9 "router:external": false, 10 "availability_zone_hints": [], 11 "availability_zones": [ 12 "nova" 13 ], 14 "ipv4_address_scope": null, 15 "shared": false, 16 "project_id": "b5b7ffd4ef0547e5b222f44500000000", 17 "status": "ACTIVE", 18 "subnets": [ 19 "5ab0164b-2528-0000-0000-b2a8d5e62661" 20 ], 21 "private_dns_domain": "mcs.local.", 22 "description": "", 23 "tags": [], 24 "updated_at": "2022-11-22T07:24:53Z", 25 "name": "demoNet2", 26 "admin_state_up": true, 27 "tenant_id": "b5b7ffd4ef0547e5b222f44500000000", 28 "created_at": "2022-11-22T07:24:51Z", 29 "mtu": 1500, 30 "sdn": "neutron" 31 }, 32 ] 33}