При использовании внешнего 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:
- Чтобы создать пользователя компьютера, используйте следующую команду
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. Если в вашей установке не используются эти значения по умолчанию, укажите их соответствующим образом.
- SSO_ADMIN_NAME – имя пользователя администратора, определенное свойством
- Войдите в интерфейс Edge, добавьте адрес электронной почты пользователя компьютера в организации и назначьте пользователю компьютера необходимую роль. Подробнее о добавлении глобальных пользователей…
Создание пользователя компьютера с помощью Edge Management API
Вы можете создать пользователя-машину с помощью Edge Management API вместо утилиты apigee-ssoadminapi.sh.
Чтобы создать пользователя-машину с помощью Management API, выполните следующие действия:
- Чтобы получить токен для пользователя
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в файле конфигурации.Эта команда возвращает токен, который понадобится для следующего вызова.
- Чтобы создать пользователя компьютера, выполните следующую команду
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"Пароль пользователя компьютера понадобится вам на следующих шагах.
- Войдите в интерфейс Edge.
- Добавьте адрес электронной почты пользователя компьютера в организации и назначьте ему нужную роль. Подробнее о добавлении глобальных пользователей…
Получение и обновление токенов пользователей компьютера
Используйте Edge API, чтобы получать и обновлять токены OAuth2, передавая учетные данные пользователя компьютера вместо кода доступа.
Чтобы получить токены OAuth2 для пользователя-машины:
- Чтобы создать начальный токен доступа и токен обновления, используйте следующий вызов 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'
Сохраните токены для дальнейшего использования.
- Передайте токен доступа в вызов Edge Management API в качестве заголовка
Bearer, как показано в следующем примере:curl -H "Authorization: Bearer access_token" \ http://MS_IP_DNS:8080/v1/organizations/org_name
где org_name – название организации, в которой находится пользователь компьютера.
- Чтобы обновить токен доступа, используйте следующий вызов, включающий токен обновления:
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'