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

Edge для частного облака v4.19.01

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

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

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

Существует два способа создать пользователя компьютера для организации SAML:

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

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

Создайте пользователя компьютера с помощью apigee-ssoadminapi.sh .

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

Пользователь компьютера создается и сохраняется в хранилище данных Edge, а не в вашем поставщике удостоверений SAML. Таким образом, вы не несете ответственности за поддержку пользователя компьютера с помощью Edge Ui и API управления Edge.

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

Чтобы создать пользователя компьютера с помощью 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, добавьте адрес электронной почты пользователя компьютера в свои организации и назначьте пользователю компьютера необходимую роль. Дополнительную информацию см. в разделе Добавление глобальных пользователей .

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

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

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

  1. Используйте следующую команду curl , чтобы получить токен для пользователя ssoadmin , имя пользователя учетной записи администратора для apigee-sso :
    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. Передайте токен доступа в вызов API управления Edge в качестве заголовка 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'