启用 Apigee SSO 后使用 Edge 管理实用程序和 API

本部分介绍如何在启用 Apigee SSO 后运行 Edge 系统管理员工具和命令。 Edge 上的许多任务都需要系统管理凭据,例如:

  • 创建组织和环境
  • 添加和移除 Edge 组件
  • 运行 apigee-adminapi.sh 命令

不过,在 Edge 上启用 SSO 后,您通常会停用基本身份验证,以便只能通过 OIDC/SAML IDP 进行身份验证。因此,您必须确保已将 系统管理员账号添加到 IDP,或为自动化创建本地机器用户。

以 系统管理员身份调用 Edge Management API

许多 Edge API 调用都需要您传递系统管理员凭据。将 SAML 与 Edge Management API 结合使用 包含有关在进行 Edge Management API 调用时如何使用 get_token 实用程序获取和刷新令牌的说明。

将 apigee-adminapi.sh 实用程序与 Apigee SSO 结合使用

使用 apigee-adminapi.sh 实用程序执行与通过调用 Edge Management API 执行的 Edge 配置任务相同的任务。 apigee-adminapi.sh 实用程序的优势在于:

  • 使用简单的命令行界面
  • 实现基于标签页的命令补全功能
  • 提供帮助和使用信息
  • 如果您决定试用 API,则可以显示相应的 API 调用

启用 Apigee SSO 后,您可以通过两种主要方式将凭据传递给 apigee-adminapi.sh 实用程序,具体取决于您是人工管理员还是自动脚本。

您可以使用命令的 -h 选项查看任何 apigee-adminapi.sh 命令的所有选项,包括用于指定 SSO 凭据的 选项。例如:

apigee-adminapi.sh orgs list -h

传递不记名令牌(适用于人工管理员)

由于现代化的 Apigee SSO 不支持旧版 /passcode 复制粘贴流程,因此人工管理员必须使用 get_token 实用程序完成 OAuth 2.0 设备代码流程,然后将生成的令牌传递给脚本。

首先,获取令牌:

/opt/apigee/apigee-openldap/bin/get_token -u adminEmail

然后,在调用命令时使用该令牌:

apigee-adminapi.sh orgs list --sso-url http://edge_sso_IP_DNS:9099 --oauth-flow passcode \
  --admin adminEmail --oauth-token token_string

其中:

  • oauth-flow 指定 passcode(这会向旧版脚本发出信号,表明正在提供令牌)。
  • oauth-token 包含从 get_token 获取的原始 JWT 字符串。

传递密码(仅适用于机器用户)

如果您要自动执行基础架构部署,则可以使用 password_grant 流程直接传递凭据。不过,如果启用了 SAML/OIDC 联合身份验证,系统会阻止人工影子用户进行密码登录 ,以防止绕过多重身份验证。您必须先在 OpenLDAP 中预配显式 机器用户。

apigee-adminapi.sh orgs list --sso-url http://edge_sso_IP_DNS:9099 --oauth-flow password_grant \
  --admin machineUserEmail --oauth-password machineUserPassword

其中:

  • sso-url 选项指定 Apigee SSO 的网址。如果您已将端口 或协议从 9099 和 HTTP 更改为其他值,请进行修改。
  • oauth-flow 指定 password_grant。
  • machineUserEmail 是自动机器用户的电子邮件地址。
  • oauth-password 指定机器用户的密码。

将 Edge 实用程序与 Apigee SSO 结合使用

许多 Edge 实用程序都需要系统管理员凭据,例如:

  • apigee-provision,用于创建组织、环境和虚拟 主机
  • setup.sh,用于向现有系统添加节点
  • 您必须在配置 文件中指定系统管理员凭据的任何其他实用程序

这些实用程序将指定系统管理员 凭据的配置文件作为输入。在启用 SSO 之前,此操作通过使用以下属性完成:

ADMIN_EMAIL="adminEmail"
APIGEE_ADMINPW="adminPWord"

启用 Apigee SSO 后,您必须使用不同的属性来指定系统管理员的凭据。

使用不记名令牌(适用于人工管理员)

对于人工管理员的互动式部署,请使用 get_token 实用程序获取令牌,并通过 OAUTH_BEARER_TOKEN 属性提供该令牌:

ADMIN_EMAIL="adminEmail"
SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"
OAUTH_FLOW="passcode"
OAUTH_BEARER_TOKEN="token_string"

其中:

  • OAUTH_FLOW 指定 passcode(表示提供了令牌)。
  • OAUTH_BEARER_TOKEN 包含从 get_token 获取的原始 JWT 字符串。

使用密码(仅适用于机器用户)

对于完全自动化的部署,请使用 password_grant 流程提供显式预配的机器用户的凭据:

ADMIN_EMAIL="machineUserEmail"
SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"
OAUTH_FLOW="password_grant"
OAUTH_ADMIN_PASSWORD="machineUserPassword"

其中:

  • SSO_LOGIN_URL 指定 Apigee SSO 的网址。
  • OAUTH_FLOW 指定 password_grant。
  • OAUTH_ADMIN_PASSWORD 指定机器用户的密码。