Методы аутентификации#

API Astra Automation Controller поддерживает аутентификацию следующими способами:

  • аутентификация сеанса (session authentication);

  • базовая аутентификация (basic authentication);

  • аутентификация через токен OAuth 2 (OAuth 2 token authentication).

Примечание

Для доступа к API рекомендуется использовать аутентификацию через токен OAuth 2.

Аутентификация сеанса#

Аутентификация сеанса используется при входе в API или пользовательский интерфейс Astra Automation Controller. С помощью утилиты curl можно увидеть активность, которая происходит при входе в Astra Automation Controller:

  1. Получите X-CSRFToken с помощью команды:

    curl -k -c - https://<address>/api/login/
    

    Пример вывода:

    192.168.56.11   FALSE   /       TRUE    0       csrftoken       n97Hk5MjncJ45qHYmPFoqx8dLy8MPQMtfOafEZZlO9oPTJIztoD8qXRVuJY1OVsQ
    

    Здесь:

    • FALSE – указывает, что cookie не требует безопасного соединения (HTTPS);

    • / – URI, к которому относится установленный cookie;

    • TRUE – указывает, что cookie доступен для всех поддоменов этого домена;

    • 0 – срок действия cookie (в секундах) отсутствует, поэтому cookie действителен только в рамках текущей сессии;

    • csrftoken – название cookie;

    • n97Hk5MjncJ45qHYmPFoqx8dLy8MPQMtfOafEZZlO9oPTJIztoD8qXRVuJY1OVsQ – CSRF-токен.

  2. Выполните запрос аутентификации:

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
         --referer https://<address>/api/login/ \
         -H 'X-CSRFToken: <your_CSRFToken>' \
         --data 'username=<username>&password=<password>' \
         --cookie 'csrftoken=<your_CSRFToken>' \
         https://<address>/api/login/ -k -D - -o /dev/null
    

    Здесь:

    • <your_CSRFToken> – CSRF-токен, полученный ранее;

    • <username> – имя пользователя;

    • <password> – пароль.

    Если пользователь успешно аутентифицирован, сервер возвращает ответ, в заголовке которого в поле X-API-Session-Cookie-Name указывает название ключа, определяющего идентификатор сеанса связи, в составе cookie. По умолчанию значение этого параметра равно awx_sessionid.

    Пример ответа:

    Server: nginx
    Date: Mon, 21 Mar 2024 18:19:04 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 0
    Connection: keep-alive
    Location: /accounts/profile/
    X-API-Session-Cookie-Name: awx_sessionid
    Expires: Mon, 21 Mar 2024 18:19:04 GMT
    Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private
    Vary: Cookie, Accept-Language, Origin
    Session-Timeout: 1800
    Content-Language: en
    X-API-Total-Time: 0.888s
    X-API-Request-Id: 0d9f18d32e6d40efb6e0427353c073d6
    Access-Control-Expose-Headers: X-API-Request-Id
    Set-Cookie: userLoggedIn=true; Path=/
    Set-Cookie: csrftoken=ZG2vbmRfTDksShZVBoHltV7pRtCpZcK9G2WBir1hsgOq6vpsM7IRvH9QmjSSBDBm; Path=/; SameSite=Lax; Secure
    Set-Cookie: awx_sessionid=89174mqdxcd2etvhp5umdysjxpr5fxdu; expires=Mon, 21 Mar 2024 18:49:04 GMT; HttpOnly; Max-Age=1800; Path=/; SameSite=Lax; Secure
    Strict-Transport-Security: max-age=63072000
    X-Frame-Options: DENY
    X-Content-Type-Options: nosniff
    Cache-Control: no-cache, no-store, must-revalidate
    Expires: 0
    Pragma: no-cache
    

Базовая аутентификация#

При использовании базовой аутентификации состояние аутентификации не сохраняется. Поэтому имя пользователя (username) и пароль (password) в формате Base64 должны отправляться вместе с каждым запросом через заголовок авторизации. Это применимо для локальных записей и для учетных записей LDAP.

Пример запроса:

curl -X GET --user '<username>:<password>' https://<address>/api/v2/credentials -k -L

В целях безопасности вы можете отключить базовую аутентификацию в графическом интерфейсе. Для этого выполните следующие действия:

  1. Перейдите в раздел Настройки (Settings).

  2. На панели Система (System) нажмите на ссылку Общие параметры аутентификации (Miscellaneous Authentication settings).

  3. Нажмите кнопку Редактировать (Edit).

  4. Выключите флаг Включить HTTP Basic Auth (Enable HTTP Basic Auth).

  5. Нажмите кнопку Сохранить (Save).

Аутентификация через токен OAuth 2#

Аутентификация через токен OAuth 2 обычно используется при программном взаимодействии с API Astra Automation Controller. Как и при базовой аутентификации, токен OAuth 2 предоставляется с каждым запросом API через заголовок авторизации. Токены имеют настраиваемый срок действия и при необходимости могут быть отозваны администратором для одного пользователя или для всей системы. По умолчанию внешним пользователям, например, созданным с помощью единого входа, не разрешено создавать токены OAuth 2 в целях безопасности.

Чтобы разрешить внешним пользователям создавать токены OAuth 2, выполните следующие действия в графическом интерфейсе контроллера:

  1. Перейдите в раздел Настройки (Settings).

  2. На панели Система (System) нажмите на ссылку Общие параметры аутентификации (Miscellaneous Authentication settings).

  3. Нажмите кнопку Редактировать (Edit).

  4. Включите флаг Разрешить внешним пользователям создавать токены OAuth2 (Allow External Users to Create OAuth2 Tokens).

  5. Нажмите кнопку Сохранить (Save).

Создать токен доступа OAuth 2 можно с помощью следующих средств:

  • графический интерфейс;

  • запрос API.

Создание токена в графическом интерфейсе#

Пошаговые инструкции по управлению токенами через графический интерфейс доступны в подразделе Управление токенами.

Создание токена с помощью запроса#

Создайте токен с помощью команды:

curl -u <username>:<password> -k -X POST https://<address>/api/v2/tokens/

Пример вывода команды:

{
   "id": 6,
   "type": "o_auth2_access_token",
   "url": "/api/v2/tokens/6/",
   "related": {
      "user": "/api/v2/users/1/",
      "activity_stream": "/api/v2/tokens/6/activity_stream/"
   },
   "summary_fields": {
      "user": {
         "id": 1,
         "username": "admin",
         "first_name": "",
         "last_name": ""
      }
   },
   "created": "2024-03-21T20:53:09.035133Z",
   "modified": "2024-03-21T20:53:09.041729Z",
   "description": "",
   "user": 1,
   "token": "<your_token>",
   "refresh_token": null,
   "application": null,
   "expires": "3023-07-23T20:53:09.030794Z",
   "scope": "write"
}

Здесь <your_token> – токен аутентификации, который теперь можно использовать для выполнения запроса, например:

curl -k -X POST \
   https://<address>/api/v2/hosts/ \
   -H “Content-Type: application/json” \
   -H “Authorization: Bearer <your_token>`