При использовании внешнего 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:
- Чтобы создать пользователя машины, используйте следующую команду
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. Если в вашей установке используются другие значения по умолчанию, укажите их.
- SSO_ADMIN_NAME – имя пользователя администратора, определенное свойством
- Войдите в интерфейс Edge, добавьте адрес электронной почты пользователя машины в организации и назначьте пользователю машины нужную роль. Подробнее о том, как добавить глобальных пользователей…
Как создать машинного пользователя с помощью Edge Management API
Вы можете создать машинного пользователя с помощью Edge Management API, а не утилиты apigee-ssoadminapi.sh.
Чтобы создать машинного пользователя с помощью Management API, выполните следующие действия:
- Используйте следующую команду
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в файле конфигурации.Эта команда покажет токен, который понадобится для следующего вызова.
- Используйте следующую команду
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'