Методы аутентификации и авторизации#
API Astra Automation поддерживает следующие методы аутентификации и авторизации:
аутентификация сеанса (session authentication);
базовая аутентификация (basic authentication);
аутентификация по токену OAuth 2.0 (token-based authentication).
Для доступа к API рекомендуется использовать аутентификацию по токену OAuth 2.0.
Перечисленные методы отвечают за аутентификацию запроса, то есть подтверждают, от чьего имени он выполняется. Права на выполнение запрошенного действия проверяются отдельно – с помощью ролевой модели (RBAC) и областей применения (scope) токена.
Примечание
По умолчанию без авторизации доступны следующие точки доступа 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/gateway/v1/login/
Пример вывода:
Здесь:
FALSE– указывает, что cookie действует только для указанного домена и не распространяется на поддомены;/– URI, к которому относится установленный cookie;TRUE– указывает, что cookie передается только по защищенному соединению (HTTPS);0– срок действия cookie не задан, поэтому cookie действителен только в рамках текущей сессии;csrftoken– название cookie;n97Hk5MjncJ45qHYmPFoqx8dLy8MPQMtfOafEZZlO9oPTJIztoD8qXRVuJY1OVsQ– CSRF-токен.
Выполните запрос аутентификации:
curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ --referer https://<address>/api/gateway/v1/login/ \ -H 'X-CSRFToken: <your_CSRFToken>' \ --data 'username=<username>&password=<password>' \ --cookie 'csrftoken=<your_CSRFToken>' \ https://<address>/api/gateway/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.0#
Аутентификация по токену OAuth 2.0 обычно используется при программном взаимодействии с API Astra Automation. Как и при базовой аутентификации, токен OAuth 2.0 предоставляется с каждым запросом API через заголовок авторизации. Токены имеют настраиваемый срок действия и при необходимости могут быть отозваны администратором для одного пользователя или для всей системы. По умолчанию внешним пользователям, например, созданным с помощью единого входа, не разрешено создавать токены OAuth 2.0 в целях безопасности.
Для снятия этого ограничения выполните следующие действия в графическом интерфейсе платформы:
Перейдите в окно Шлюз платформы (Platform gateway), выбрав на панели навигации ().
Нажмите кнопку Изменить настройки шлюза платформы (Edit platform gateway settings).
Установите в поле Разрешить внешним пользователям создавать OAuth2-токены (Allow external users to create OAuth2 tokens) значение
Включенный(Enable).Нажмите кнопку Сохранить настройки шлюза платформы (Save platform gateway settings).
Создать токен доступа OAuth 2.0 можно с помощью следующих средств:
графический интерфейс;
запрос 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