Методы авторизации#

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

  • авторизация сеанса (session authorization);

  • базовая авторизация (basic authorization);

  • авторизация через токен OAuth 2 (OAuth 2 token authorization).

Примечание

Для доступа к 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>`