使用机器用户自动执行任务

将外部 IDP 与 Edge API 搭配使用时,从 CLI 获取 OIDC/OAuth2 访问令牌的标准流程是 OAuth 2.0 设备代码流程。在此流程中,您可以使用 get_token 实用程序,该实用程序会提示您在浏览器中访问网址以通过 IDP 进行身份验证,然后自动解除对终端的屏蔽。

不过,您的开发环境可能支持常见开发任务的自动化, 例如测试自动化或 CI/CD 流水线。如需在启用外部 IDP 时自动执行这些任务, 您需要一种以无头方式获取和刷新 OAuth2 令牌的方法,而无需浏览器交互。

Edge 支持通过使用无头机器用户自动生成令牌。机器用户可以通过标准密码授权获取 OIDC/OAuth2 令牌,而无需浏览器。这意味着您可以完全自动执行 脚本的令牌获取和刷新流程。

创建机器用户

您可以创建一个供所有组织使用的机器用户,也可以为每个组织创建一个单独的机器用户。

机器用户直接在本地 OpenLDAP 目录中创建和存储,并明确标记为机器用户 (employeeType: machineuser)。这样,即使对于人工用户严格强制执行联合 SAML/OIDC,Apigee SSO 也可以通过密码授权安全地对机器用户进行身份验证。

如需详细了解如何创建、列出和管理机器用户,请参阅使用 apigee-machineuser.sh 管理机器用户。

获取和刷新机器用户令牌

您可以使用 get_token 和 acurl 实用程序(在 /opt/apigee/apigee-openldap/bin/ 中提供)或标准 curl 来获取机器用户的令牌。

  • 使用 Apigee 实用程序 :get_token 和 acurl 封装容器会自动处理令牌缓存、有效负载生成和自动刷新。如需详细了解如何使用这些工具以及相关示例,请参阅 使用 get_token 和 acurl 实用程序。
  • 使用标准 curl :如果您的自动化脚本无权访问 Apigee 封装容器,则可以使用以下标准 curl 命令直接与 Apigee SSO 进行交互:

如需使用标准 curl 获取和刷新令牌,请执行以下操作

  1. 使用以下 API 调用直接从 Apigee SSO 生成初始访问令牌和刷新令牌:
    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'
      
  2. 在 Authorization: Bearer 标头中将访问令牌传递给 Edge Management API 调用:
    curl -H "Authorization: Bearer access_token" \
      http://MS_IP_DNS:8080/v1/organizations/org_name
  3. 如需稍后以原生方式刷新访问令牌,请使用以下包含刷新令牌的调用:
    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'