Методы авторизации#
API Astra Automation поддерживает авторизацию следующими способами:
авторизация сеанса (session authorization);
базовая авторизация (basic authorization);
авторизация через токен OAuth 2 (OAuth 2 token authorization).
Для доступа к API рекомендуется использовать авторизацию через токен OAuth 2.
Примечание
По умолчанию без авторизации доступны следующие точки доступа API:
/api/;/api/gateway/v1/login/;/api/gateway/v1/ui_auth/;/api/gateway/v1/ping/;/api/controller/v2/;/api/controller/v2/ping/;/api/galaxy/.
Авторизация сеанса#
Авторизация сеанса используется при входе в API или пользовательский интерфейс Astra Automation.
С помощью утилиты curl можно увидеть активность, которая происходит при входе в Astra Automation:
Получите X-CSRFToken с помощью команды:
curl -k -c - https://<address>/api/geteway/v1/login/
Пример вывода:
Здесь:
FALSE– указывает, что cookie не требует безопасного соединения (HTTPS);/– URI, к которому относится установленный cookie;TRUE– указывает, что cookie доступен для всех поддоменов этого домена;0– срок действия cookie (в секундах) отсутствует, поэтому cookie действителен только в рамках текущей сессии;csrftoken– название cookie;n97Hk5MjncJ45qHYmPFoqx8dLy8MPQMtfOafEZZlO9oPTJIztoD8qXRVuJY1OVsQ– CSRF-токен.
Выполните запрос авторизации:
curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ --referer https://<address>/api/geteway/v1/login/ \ -H 'X-CSRFToken: <your_CSRFToken>' \ --data 'username=<username>&password=<password>' \ --cookie 'csrftoken=<your_CSRFToken>' \ https://<address>/api/geteway/v1/login/ -k -D - -o /dev/null
Здесь:
<your_CSRFToken> – CSRF-токен, полученный ранее;
<username> – название учетной записи пользователя;
<password> – пароль.
Если авторизация прошла успешно, сервер возвращает заголовок
Set-Cookie, в котором создает cookie с именемgateway_sessionid. Значение этого cookie является идентификатором сессии (<session_ID>).Пример ответа:
После успешной авторизации можно использовать cookie
gateway_sessionidпри обращении к API. Пример использования:curl -X GET --cookie "gateway_sessionid=<session_ID>" https://<address>/api/<component>/<api_endpoint> -k -L | jq
Здесь:
<session_ID> – идентификатор сеанса, полученный ранее.
<component> – компонент к которому необходимо обратиться, например,
gateway. API поддерживает следующие компоненты:шлюз –
gateway;Automation Controller –
controller;Private Automation Hub –
galaxy;Event-Driven Automation –
eda.
<api_endpoint> – точка доступа API (URI), к которой делается запрос, например,
v1/users/. Полный список поддерживаемых точек доступа смотри в спецификации конкретного компонента.
Примечание
По умолчанию сеанс длится 900 секунд. Изменить длительность сеанса можно в графическом интерфейсе с помощью настройки Время жизни cookie сессии (Session cookie age).
Базовая авторизация#
При использовании базовой авторизации состояние не сохраняется. Поэтому название учетной записи пользователя (username) и пароль (password) в формате Base64 должны отправляться вместе с каждым запросом через заголовок авторизации. Это применимо для локальных записей и для учетных записей LDAP.
Пример запроса:
curl -X GET --user '<username>:<password>' https://<address>/api/gateway/v1/users/ -k -L | jq
В целях безопасности вы можете отключить базовую авторизацию в графическом интерфейсе. Для этого выполните следующие действия:
Перейдите в окно Шлюз платформы (Platform gateway) выбрав на панели навигации ().
Нажмите кнопку Изменить настройки шлюза платформы (Edit platform gateway settings).
Установите в поле Базовая аутентификация шлюза включена (Gateway basic auth enabled) значение
Неактивный(Disable).Нажмите кнопку Сохранить настройки шлюза платформы (Save platform gateway settings).
Авторизация через токен OAuth 2#
Авторизация через токен OAuth 2 обычно используется при программном взаимодействии с API Astra Automation. Как и при базовой авторизации, токен OAuth 2 предоставляется с каждым запросом API через заголовок авторизации. Токены имеют настраиваемый срок действия и при необходимости могут быть отозваны администратором для одного пользователя или для всей системы. По умолчанию внешним пользователям, например, созданным с помощью единого входа, не разрешено создавать токены OAuth 2 в целях безопасности.
Чтобы разрешить внешним пользователям создавать токены OAuth 2, выполните следующие действия в графическом интерфейсе контроллера:
Перейдите в окно Шлюз платформы (Platform gateway) выбрав на панели навигации ().
Нажмите кнопку Изменить настройки шлюза платформы (Edit platform gateway settings).
Установите в поле Разрешить внешним пользователям создавать OAuth2-токены (Allow external users to create OAuth2 tokens) значение
Включенный(Enable).Нажмите кнопку Сохранить настройки шлюза платформы (Save platform gateway settings).
Создать токен доступа OAuth 2 можно с помощью следующих средств:
графический интерфейс;
запрос API.
Создание токена в графическом интерфейсе#
Пошаговые инструкции по управлению токенами через графический интерфейс доступны в секции Управление токенами.
Создание токена с помощью запроса#
Создайте токен с помощью команды:
curl -u <username>:<password> -k -X POST https://<address>/api/gateway/v1/tokens/ | jq
Пример вывода команды:
Здесь <your_token> – токен авторизации, который теперь можно использовать для выполнения запроса, например:
curl -k -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your_token>" \
https://<address>/api/controller/v2/hosts/ | jq