Аутентификация в REST-API через OAuth

oVirt поддерживает OAuth в качестве основного варианта аутентификации пользователей при доступе к REST-API. Идентификация пользователя производится с помощью токена носителя (Bearer Token), передаваемого в заголовке HTTP запроса. Для получения токена пользователь должен выполнить POST запрос на адрес https://{engine_fqdn}/ovirt-engine/sso/oauth/token, указав в URL дополнительные параметры:

  • grant_type: password (способ аутентификации)

  • scope: ovirt-app-api

  • username: {login}, где login - это имя учетной записи пользователя, для которой будет запрашиваться токен. По-умолчанию, для oVirt версии 4.5.1 или более новых можно использовать встроенную учетную запись admin@ovirt@internalsso (это полное доменное имя учетной записи admin@ovirt), для oVirt 4.5.0 или более старых - учетную запись admin@internal

  • password: {password} - пароль учетной записи пользователя.

При использовании спец.символов (например, @, &, !, / и других) в логине или пароле пользователя, замените их соответствующими кодами. Для удобства можете воспользоваться онлайн-сервисами, например: https://www.w3schools.com/tags/ref_urlencode.ASP

Пример правильно сформированного URL:

https://manager10.lab.internal/ovirt-engine/sso/oauth/token?grant_type=password&scope=ovirt-app-api&username=admin%40ovirt%40internalsso&password=P%40ssw0rd

В заголовок POST запроса также требуется добавить Accept: application/json

Пример запроса с использованием Curl для получения токена на пользователя admin:

curl \
--cacert '/etc/pki/ovirt-engine/apache-ca.pem' \
--request POST \
--header 'Accept: application/json' \
'https://manager10.lab.internal/ovirt-engine/sso/oauth/token?grant_type=password&scope=ovirt-app-api&username=admin%40ovirt%40internalsso&password=P%40ssw0rd'

, где --cacert -указывает путь к файлу корневого сертификата, которым подписан сертификат, используемый при подключении к серверу Engine. По умолчанию, если вы запускаете Curl с самого сервера Engine и используете самозаверенные сертификаты, созданные при установке, корневой сертификат будет располагаться в каталоге /etc/pki/ovirt-engine/apache-ca.pem

--request POST - указывает тип запроса.

--header 'Accept: application/json' - указывает в каком формате требуется выдавать ответ на запрос.

После выполнения запроса вы получите ответ с заголовком access_token, который будет содержать токен носителя.

Для выполнения последующих запросов добавьте данный токен в заголовок 'Authorization: Bearer {Bearer_Token}'.

Пример GET запроса с использованием токена:

curl \
--cacert '/etc/pki/ovirt-engine/apache-ca.pem' \
--request GET \
--header 'Accept: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ4X3AtUjZIdEFwYkhBd21nek14cGswMkdDNlM5SmY3STNac0pMYW9aS3dNIn0.eyJleHAiOjE2NzAxOTQ4NjAsImlhdCI6MTY3MDE3NzU4MCwianRpIjoiM2Y1Zjk3ZTQtNjIwOC00MWI2LTg2NzMtZDAxNjliM2VhYTlkIiwiaXNzIjoiaHR0cHM6Ly9tYW5hZ2VyMTAubGFiLmludGVybmFsL292aXJ0LWVuZ2luZS1hdXRoL3JlYWxtcy9vdmlydC1pbnRlcm5hbCIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI4YmQxMjk2YS1mYjk0LTRiY2QtYmMxMC05MDQzM2IyNjIzODIiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJvdmlydC1lbmdpbmUtaW50ZXJuYWwiLCJzZXNzaW9uX3N0YXRlIjoiYzBiMDU4NTItNDNiZC00M2QxLWIwOTItMGUxYjg1ZTdhZGY1IiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwczovL21hbmFnZXIxMC5sYWIuaW50ZXJuYWwiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImRlZmF1bHQtcm9sZXMtb3ZpcnQtaW50ZXJuYWwiLCJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvdmlydC1leHQ9dG9rZW4taW5mbzp2YWxpZGF0ZSBwcm9maWxlIG92aXJ0LWV4dD10b2tlbi1pbmZvOnB1YmxpYy1hdXRoei1zZWFyY2ggZW1haWwgb3ZpcnQtZXh0PXRva2VuOnBhc3N3b3JkLWFjY2VzcyBvdmlydC1hcHAtYXBpIG92aXJ0LWV4dD10b2tlbi1pbmZvOmF1dGh6LXNlYXJjaCIsInNpZCI6ImMwYjA1ODUyLTQzYmQtNDNkMS1iMDkyLTBlMWI4NWU3YWRmNSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZ3JvdXBzIjpbIi9vdmlydC1hZG1pbmlzdHJhdG9yIl0sInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluQG92aXJ0IiwiZW1haWwiOiJhZG1pbkBsb2NhbGhvc3QifQ.JtBqj3bQErONMZhXQKkVqJv52dO_5o6gl3vJEg2vT3iTzla6GkT7JG41TAUlqhhMFER0WAjpKIUC5sGZ5kTPi0RSjan6ZqblBGUSz91aMWIIs4FrRvYE0c2UhC8rnaDgLqTXR9Bz1-PFfJAXuycDLuvaYQVovnvixGCDc8cWrp2R9snQXjj9FZZGdSvVjqd17I_aXTyYAPwo-wHnijJpXTTEQY5GC5JEse818wuokB8TYSPOwD_LD7Bm39WdWpDdYIIVtpf1DiHyUW9hP_XLi0WwcF6toMi1E-hdRBFOSZnRzWXm3uIgRyMtnK30f3XaL8O5nlM5G6PjEbqKhoBnHg' \
'https://manager10.lab.internal/ovirt-engine/api/vms'

При отсутствии активности со стороны пользователя токен устаревает и перестает работать через 100 часов, а также при запросе нового токена для пользователя или перезапуке службы ovirt-engine.

Last updated