Использование SAML с автоматизированными задачами

Edge for Private Cloud 4.19.01

При использовании SAML с Edge API процесс получения токенов доступа и токенов обновления OAuth2 из утверждения SAML называется потоком кода доступа. В этом случае вы используете браузер, чтобы получить одноразовый код доступа, который затем используется для получения токенов OAuth2.

Однако ваша среда разработки может поддерживать автоматизацию стандартных задач, таких как автоматическое тестирование или непрерывная интеграция и непрерывное развертывание (CI/CD). Чтобы автоматизировать эти задачи при включенном SAML, вам нужен способ получать и обновлять токены OAuth2 без необходимости копировать и вставлять код доступа из браузера.

Edge поддерживает автоматическое создание токенов с помощью машинных пользователей в организациях SAML. Пользователь-машина может получать токены OAuth2 без указания кода доступа. Это означает, что вы можете полностью автоматизировать процесс получения и обновления токенов OAuth2 с помощью Edge Management API.

Создать пользователя-машину для организации SAML можно двумя способами:

Каждый из этих методов описан в следующих разделах.

Вы не можете создать пользователя-машину для организации, не использующей SAML.

Создайте пользователя-машину с помощью apigee-ssoadminapi.sh

Используйте утилиту apigee-ssoadminapi.sh, чтобы создать пользователя компьютера в организации SAML. Подробнее об использовании apigee-ssoadminapi.sh… Вы можете создать одного пользователя-робота для всех организаций или отдельного пользователя-робота для каждой организации.

Пользователь компьютера создается и хранится в хранилище данных Edge, а не у поставщика идентификационной информации SAML. Поэтому вам не нужно поддерживать пользователя-машину с помощью Edge UI и Edge Management API.

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

Чтобы создать пользователя компьютера с помощью apigee-ssoadminapi.sh:

  1. Чтобы создать пользователя компьютера, используйте следующую команду apigee-ssoadminapi.sh:
    apigee-ssoadminapi.sh saml machineuser add --admin SSO_ADMIN_NAME \
      --secret SSO_ADMIN_SECRET --host Edge_SSO_IP_or_DNS \
      -u machine_user_email -p machine_user_password

    Где:

    • SSO_ADMIN_NAME – имя пользователя с правами администратора, определенное свойством SSO_ADMIN_NAME в файле конфигурации, который используется для настройки модуля Edge SSO. Значение по умолчанию – ssoadmin.
    • SSO_ADMIN_SECRET – пароль администратора, указанный в свойстве SSO_ADMIN_SECRET в файле конфигурации.
    • В этом примере можно опустить значения для --port и --ssl, поскольку модуль apigee-sso использует значения по умолчанию: 9099 для --port и http для --ssl. Если в вашей установке не используются эти значения по умолчанию, укажите их соответствующим образом.

  2. Войдите в интерфейс Edge, добавьте адрес электронной почты пользователя компьютера в организации и назначьте пользователю компьютера необходимую роль. Подробнее о добавлении глобальных пользователей…

Создание пользователя компьютера с помощью Edge Management API

Вы можете создать пользователя-машину с помощью Edge Management API вместо утилиты apigee-ssoadminapi.sh.

Чтобы создать пользователя-робота с помощью Management API, выполните следующие действия:

  1. Чтобы получить токен для пользователя ssoadmin (имя пользователя аккаунта администратора для apigee-sso), используйте следующую команду curl:
    curl "http://Edge_SSO_IP_DNS:9099/oauth/token" -i -X POST \
      -H 'Accept: application/json' / -H 'Content-Type: application/x-www-form-urlencoded' \
      -d "response_type=token" -d "grant_type=client_credentials" \
      --data-urlencode "client_secret=SSO_ADMIN_SECRET" \
      --data-urlencode "client_id=ssoadmin"

    где SSO_ADMIN_SECRET – пароль администратора, заданный при установке apigee-sso и указанный в свойстве SSO_ADMIN_SECRET в файле конфигурации.

    Эта команда возвращает токен, который понадобится для следующего вызова.

  2. Чтобы создать пользователя компьютера, выполните следующую команду curl, передав токен, полученный на предыдущем шаге:
    curl "http://edge_sso_IP_DNS:9099/Users" -i -X POST \
      -H "Accept: application/json" -H "Content-Type: application/json" \
      -d '{"userName" : "machine_user_email", "name" :
        {"formatted":"DevOps", "familyName" : "last_name", "givenName" :
        "first_name"}, "emails" : [ {"value" :
        "machine_user_email", "primary" : true } ], "active" : true,
        "verified" : true, "password" : "machine_user_password" }' \
      -H "Authorization: Bearer token"

    Пароль пользователя компьютера понадобится вам на следующих шагах.

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

Получение и обновление токенов пользователей компьютера

Используйте Edge API, чтобы получать и обновлять токены OAuth2, передавая учетные данные пользователя компьютера вместо кода доступа.

Чтобы получить токены OAuth2 для пользователя компьютера:

  1. Чтобы создать начальный токен доступа и токен обновления, используйте следующий вызов API:
    curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \
      -H "accept: application/json;charset=utf-8" \
      -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \
      http://Edge_SSO_IP_DNS:9099/oauth/token -s \
      -d 'grant_type=password&username=m_user_email&password=m_user_password'

    Сохраните токены для дальнейшего использования.

  2. Передайте токен доступа в вызов Edge Management API в качестве заголовка Bearer:
    curl -H "Authorization: Bearer access_token" \
      http://MS_IP_DNS:8080/v1/organizations/org_name

    где org_name – название организации, в которой находится пользователь компьютера.

  3. Чтобы обновить токен доступа, используйте следующий вызов, включающий токен обновления:
    curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" \
      -H "Accept: application/json;charset=utf-8" \
      -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \
      http://edge_sso_IP_DNS:9099/oauth/token \
      -d 'grant_type=refresh_token&refresh_token=refreshToken'