Как получить X-Auth-Token в Identity API v3?

В Identity API v3 идентификатор X-Auth-Token (например, X-Subject-Token: 51aj73145b553he7bdfgb9fa8b53bede) находится в заголовке ответа, а не в его теле. Ниже показано, как можно получить идентификатор X-Auth-Token с помощью инструмента cURL.


curl -i -H "Content-Type: application/json" -d '{ "auth": {"identity": {"methods": ["password"], "password": {"user": {"name": "1011131", "domain": { "id": "default" }, "password": "KGrhJKFjmyqabBay" }}}}}' "https://auth.files.nl01.cloud.servers.com:5000/v3/auth/tokens" ; echo

где:

name — первая часть имени пользователя в Openstack Swift (например, “name”: “1011131”), а вторая часть представляет собой имя арендатора (tenant-name) в Openstack Swift (например, 1011131.1011131).


Для идентификатора (id) домена следует явно указать тип по умолчанию — default(например, “domain”: { “id”: “default” }).


password
 — пароль к FTP, который можно получить на панели управления Universal CDN (Universal CDN Control Panel) (например, “password”: “KGrhJKFjmyqabBay”).


URL авторизации для контейнеров хранилища в Европе:

https://auth.files.nl01.cloud.servers.com:5000/v3/auth/tokens


URL авторизации для контейнеров хранилища в Северной Америке:

https://auth.files.us01.cloud.servers.com:5000/v3/auth/tokens


Пример:

$ curl -i -H "Content-Type: application/json" -d '{ "auth": {"identity": {"methods": ["password"], "password": {"user": {"name": "1011131", "domain": { "id": "default" }, "password": "KGrhJKFjmyqabBay" }}}}}' "https://auth.files.nl01.cloud.servers.com:5000/v3/auth/tokens" ; echo
HTTP/1.1 201 Created
Date: Wed, 11 Aug 2021 06:16:23 GMT
Server: Apache/2.4.18 (Ubuntu)
X-Subject-Token: 51aj73145b553he7bdfgb9fa8b53bede
Vary: X-Auth-Token
X-Distribution: Ubuntu
x-openstack-request-id: req-a3ce4e45-4b46-4aef-8ae2-5c12bb221c6b
Content-Length: 1922
Content-Type: application/json

{"token": {"is_domain": false, "methods": ["password"], "roles": [{"id": "9fe2ff9ee4384b1894a90878d3e92bab", "name": "_member_"}, {"id": "36df16334ce54a0a80527b1df2db7974", "name": "SwiftOperator"}], "expires_at": "2021-08-12T06:16:23.000000Z", "project": {"domain": {"id": "default", "name": "Default"}, "id": "31c646340f83401ebc46e770e0cd449f", "name": "1011131"}, "catalog": [{"endpoints": [{"url": "https://storage.files.nl01.cloud.servers.com:8080/v1/SERVERSCOM_31c646340f83401ebc46e770e0cd449f", "interface": "public", "region": "ams-1", "region_id": "ams-1", "id": "0414c0c1ce44403fbc476f70afe92d90"}, {"url": "https://storage.files.nl01.cloud.servers.com:8080/v1", "interface": "admin", "region": "ams-1", "region_id": "ams-1", "id": "18654ed293e54241a2400a4bb0e5baa4"}, {"url": "https://storage.files.nl01.cloud.servers.com:8080/v1/SERVERSCOM_31c646340f83401ebc46e770e0cd449f", "interface": "internal", "region": "ams-1", "region_id": "ams-1", "id": "350380b43a974e5f851cb078cc99c8ee"}], "type": "object-store", "id": "d3d7d4a01f62488ca7fbbb725bb125a2", "name": "swift"}, {"endpoints": [{"url": "https://auth.files.nl01.cloud.servers.com:5000/", "interface": "public", "region": "ams-1", "region_id": "ams-1", "id": "2c352870a2cc4c6b9319236915698014"}, {"url": "http://keystone.p.swift-ams-1.mgm.servers.com:5001/", "interface": "internal", "region": "ams-1", "region_id": "ams-1", "id": "93cf6481f4974f11a07d7321ec3cdd9c"}, {"url": "http://keystone.p.swift-ams-1.mgm.servers.com:35357/", "interface": "admin", "region": "ams-1", "region_id": "ams-1", "id": "e65c7bf7fcf4493da425deb56b1f1710"}], "type": "identity", "id": "a6eaea6661834e50bba6b31b375b2d29", "name": "keystone"}], "user": {"password_expires_at": null, "domain": {"id": "default", "name": "Default"}, "id": "8e5a4feec6864bf1b8b88ff2dcebf828", "name": "1011131"}, "audit_ids": ["R1H6KaCIQVG5tFejqNBBCg"], "issued_at": "2021-08-11T06:16:23.000000Z"}}

Наше облачное хранилище имеет тип OpenStack Object Storage (swift). Чтобы, например, отправить post-запрос на добавление файла в свой контейнер хранилища, используйте URL “catalog” (конечную точку swift) из тела приведенного выше запроса:

"https://storage.files.nl01.cloud.servers.com:8080/v1/SERVERSCOM_31c646340f83401ebc46e770e0cd449f"

Пример:

curl -i -X PUT -T /path_to_your_file -H "X-Auth-Token: 51aj73145b553he7bdfgb9fa8b53bede" "https://storage.files.nl01.cloud.servers.com:8080/v1/SERVERSCOM_31c646340f83401ebc46e770e0cd449f/your_storage_name/your_file_name"


где:

X-Auth-Token — значение X-Subject-Token из заголовка (X-Subject-Token: 51aj73145b553he7bdfgb9fa8b53bede)


https://storage.files.nl01.cloud.servers.com:8080/v1/SERVERSCOM_
 — URL каталога из тела запроса. Для контейнеров хранилища в Северной Америке URL начинается с https://storage.files.us01.cloud.servers.com:8080/v1/SERVERSCOM_



Загрузка файлов по FTP

Загрузка с использованием Python-Swiftclient

Добавление больших файлов с помощью Python-Swiftclient

Загрузка файлов с помощью OpenStack Swift API

Загрузка файлов с помощью Rclone