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