Аутентификация в 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:

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

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

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

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

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

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

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

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

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

Last updated