Как автоматизировать задачи для внешних поставщиков идентификационной информации

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

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

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

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

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

Создать пользователя-машину для организаций, в которых не включен внешний поставщик идентификационной информации, нельзя.

Как создать машинного пользователя с помощью apigee-ssoadminapi.sh

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

Пользователь машины создается и хранится в хранилище данных Edge, а не в вашем поставщике идентификационной информации. Поэтому вам не нужно поддерживать пользователя машины с помощью интерфейса Edge и 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 в файле конфигурации, который используется для настройки модуля Apigee 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. Используйте следующую команду 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. Передайте токен доступа в вызов 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'