При использовании внешнего поставщика идентификационной информации с Edge API стандартный процесс получения токенов доступа OIDC/OAuth2 из интерфейса командной строки – это поток кода устройства OAuth 2.0. В этом случае вы используете утилиту get_token, которая предлагает вам перейти по URL в браузере, чтобы пройти аутентификацию через поставщика идентификационной информации, а затем автоматически разблокирует терминал.
Однако ваша среда разработки может поддерживать автоматизацию стандартных задач, например автоматическое тестирование или конвейеры CI/CD. Чтобы автоматизировать эти задачи при включенном внешнем поставщике идентификационной информации, вам нужен способ получать и обновлять токены OAuth2 без взаимодействия с браузером.
Edge поддерживает автоматическое создание токенов с помощью пользователей без интерфейса. Пользователь компьютера может получать токены OIDC/OAuth2 с помощью стандартных разрешений паролей без использования браузера. Это означает, что вы можете полностью автоматизировать процесс получения и обновления токенов для своих скриптов.
Как создать аккаунт машинного пользователя
Вы можете создать одного машинного пользователя для всех организаций или отдельного машинного пользователя для каждой организации.
Пользователь-машина создается и хранится непосредственно в локальном каталоге OpenLDAP и явно помечается как пользователь-машина (employeeType: machineuser). Это позволяет Apigee SSO безопасно выполнять аутентификацию пользователя-машины с помощью предоставления пароля, даже если для пользователей-людей строго применяется федеративный SAML/OIDC.
Подробные инструкции по созданию, просмотру и управлению пользователями-машинами приведены в статье Управление пользователями-машинами с помощью apigee-machineuser.sh.
Получение и обновление токенов пользователей компьютера
Чтобы получить токены для пользователей-машин, можно использовать утилиты get_token и acurl, доступные в /opt/apigee/apigee-openldap/bin/, или стандартную утилиту curl.
- Использование утилит Apigee. Оболочки
get_tokenиacurlавтоматически обрабатывают кеширование токенов, создание полезной нагрузки и автоматическое обновление. Подробные инструкции и примеры использования этих инструментов приведены в статье Как использовать утилиты get_token и acurl. - Использование стандартной команды curl. Если у ваших скриптов автоматизации нет доступа к оболочкам Apigee, вы можете взаимодействовать с системой единого входа Apigee напрямую, используя следующие стандартные команды
curl:
Чтобы получить и обновить токены с помощью стандартного curl:
- Чтобы сгенерировать начальный токен доступа и токен обновления непосредственно из системы единого входа Apigee, используйте следующий вызов API:
curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \ -H "accept: application/json;charset=utf-8" \ -X POST http://Edge_SSO_IP_DNS:9099/token -s \ -d 'grant_type=password&username=machineUserEmail&password=machineUserPassword&client_id=edgecli&client_secret=edgeclisecret&scope=openid%20profile%20email%20offline_access' - Передайте токен доступа в вызове API управления Edge в заголовке
Authorization: Bearer:curl -H "Authorization: Bearer access_token" \ http://MS_IP_DNS:8080/v1/organizations/org_name
- Чтобы обновить токен доступа, используйте следующий вызов, включающий токен обновления:
curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" \ -H "Accept: application/json;charset=utf-8" \ -X POST http://Edge_SSO_IP_DNS:9099/token \ -d 'grant_type=refresh_token&refresh_token=refreshToken&client_id=edgecli&client_secret=edgeclisecret'