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

{% embed url="<https://youtu.be/tLRoFwUmug8>" %}

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

* **grant\_type: password** (способ аутентификации)
* **scope: ovirt-app-api**&#x20;
* **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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://omnimod.gitbook.io/ovirt/integraciya/autentifikaciya-v-rest-api-cherez-oauth.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
