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

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

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

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

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

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

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

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

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

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