将外部 IDP 与 Edge Management API 搭配使用

基本身份验证是调用 Edge 管理 API 时进行身份验证的一种方式。 例如,您可以向 Edge Management API 发出以下 curl 请求,以访问 有关组织的信息:

curl -u USER_NAME:PASSWORD http://MS_IP_DNS:8080/v1/organizations/ORG_NAME

在此示例中,您可以使用 curl -u 选项传递基本身份验证 凭据。或者,您也可以在 Authorization: Bearer 标头中传递 OIDC/OAuth2 令牌,以进行 Edge Management API 调用,如以下示例所示:

curl -H "Authorization: Bearer ACCESS_TOKEN" http://MS_IP_DNS:8080/v1/organizations/ORG_NAME

为身份验证启用外部 IDP 后,您可以选择停用基本 身份验证。如果您停用基本身份验证,所有依赖于支持基本身份验证的 Edge 管理 API 调用的脚本(例如 Maven、shell 和 apigeetool)将无法再正常运行。您必须更新 所有使用基本身份验证的 API 调用和脚本,以在 Bearer 标头中传递 OAuth2 访问令牌。

使用 get_token 获取和刷新令牌

get_token 实用程序使用标准 OAuth 2.0 设备代码流程来获取 OIDC/OAuth2 访问令牌和刷新令牌。该实用程序会提示您在浏览器中访问网址,以通过外部 IDP(或本地 LDAP)进行身份验证,然后自动取消屏蔽您的终端以输出有效的访问令牌。

get_token 实用程序会将令牌安全地缓存在磁盘上的 ~/.sso-cli/ 中,以便在需要时使用。它还会将有效的访问令牌输出到 stdout。如果现有令牌可以刷新,该实用程序会自动刷新该令牌。如果刷新令牌过期,它将启动新的基于浏览器的授权流程。

如需获取 OAuth2 访问令牌以进行 Edge 管理 API 调用,请执行以下操作:

  1. get_token 和 acurl 实用程序预安装在托管 Apigee SSO(OpenLDAP 节点)的节点上,路径为: /opt/apigee/apigee-openldap/bin/
  2. (可选)将 SSO_LOGIN_URL 环境变量设置为您的 SSO 发布者网址,格式如下:
    export SSO_LOGIN_URL="http://EDGE_SSO_IP_DNS:9099"

    其中,EDGE_SSO_IP_DNS 是托管 Apigee SSO 的机器的 IP 地址或 DNS 名称。如果您在 Apigee SSO 上配置了 TLS,请使用 https 和正确的 TLS 端口号。

  3. 使用您的电子邮件地址调用 get_token,以启动 OAuth 2.0 设备代码流程:
    /opt/apigee/apigee-openldap/bin/get_token -u EMAIL_ADDRESS

    其中,EMAIL_ADDRESS 是 Edge 用户的电子邮件地址。

  4. 该实用程序将暂停,并在您的终端中输出网址和 8 个字符的设备代码:
    Please visit: http://EDGE_SSO_IP_DNS:9099/device
    And enter code: ABCD-EFGH
  5. 在浏览器中打开指定的网址,输入设备代码,然后点击提交 。系统会将您重定向到外部 IDP(或本地 LDAP 表单)以进行身份验证并批准请求。
  6. 在浏览器中成功完成身份验证后,返回到终端。get_token 实用程序会自动检测批准,获取 OAuth2 访问令牌,将其输出到屏幕并安全地缓存。
  7. 使用 acurl 实用程序将访问令牌传递给 Edge 管理 API 调用,该实用程序会自动读取缓存的令牌并注入 Bearer 标头:
    /opt/apigee/apigee-openldap/bin/acurl http://MS_IP_DNS:8080/v1/organizations/ORG_NAME

    或者,您也可以使用标准 curl 手动传递令牌:

    curl -H "Authorization: Bearer ACCESS_TOKEN" \
      http://MS_IP_DNS:8080/v1/organizations/ORG_NAME

使用 Management API 获取和刷新令牌

旧版 /passcode 端点已移除。因此,人工用户必须使用前面介绍的 get_token 实用程序来启动基于浏览器的 OAuth 2.0 设备代码流程,以进行初始身份验证。

如果您要编写无法与浏览器交互的脚本或 CI/CD 流水线,请参阅使用机器用户自动执行任务。具有有效凭据的自动化机器用户或应用可以使用标准 API 调用来获取和刷新令牌。