使用 get_token 和 acurl 实用程序

Apigee 提供了 get_token 和 acurl 实用程序,以简化与 Apigee SSO 和 Edge Management API 的交互。这些工具会自动处理令牌生成、缓存、刷新和注入。

这些实用程序安装在 OpenLDAP 节点上的 /opt/apigee/apigee-openldap/bin/ 中。

get_token 实用程序

get_token 实用程序负责获取 OIDC/OAuth2 访问令牌和刷新令牌。它支持两种主要身份验证流程,并包含内置令牌缓存。

身份验证流程

  • 设备代码流程 (RFC 8628): 专为通过外部身份提供方(例如 SAML、Okta 或 OIDC)进行身份验证的人类用户而设计。如果您仅传递电子邮件地址 (-u <email>),该实用程序会启动此流程,并提示您在浏览器中批准网址和代码。
  • 密码授权 (ROPC): 专为无头机器用户和自动化脚本而设计。如果您同时传递用户名和密码 (-u <user>:<password>),它会直接针对 Apigee SSO 进行身份验证,而无需浏览器交互。

令牌缓存和自动刷新

get_token 实用程序会自动管理令牌生命周期,因此您无需手动跟踪到期时间:

  • 缓存检查: 调用时,get_token 会检查 ~/.sso-cli/<username>-token.json 中的本地缓存。如果存在有效且未过期的令牌,它会重复使用该令牌,而无需重新进行身份验证。
  • 自动刷新: 如果缓存的访问令牌已过期,但存在有效的刷新令牌,该实用程序会自动在 Apigee SSO 中将刷新令牌交换为新的访问令牌。

环境变量

您可以选择使用以下环境变量自定义 get_token 的行为:

  • SSO_LOGIN_URL:Apigee SSO 网址(默认值:http://localhost:9099)。
  • CLIENT_ID:OAuth2 客户端 ID(默认值:edgecli)。
  • CLIENT_SECRET:OAuth2 客户端密钥(默认值:edgeclisecret)。

acurl 实用程序

acurl 实用程序是标准 curl 的透明封装容器。它可确保每个 API 请求都包含有效的不记名令牌。

  • 实参分离: 该实用程序会提取 -u <user:password> 或 -u <user> 实参,并将其传递给 get_token。它会将所有其他实参(例如 -X、-H、-d、-v、-s)直接转发给标准 curl。
  • 执行: 成功从 get_token 获取或检索有效令牌后,acurl 会自动将 -H "Authorization: Bearer <token>" 标头注入到 curl 调用中。

用法示例

示例 1:人类用户的互动式登录

/opt/apigee/apigee-openldap/bin/acurl -u developer@apigee.com http://MS_IP_DNS:8080/v1/organizations

此命令会暂停,提示用户访问浏览器以通过其外部 IDP 进行身份验证,然后在获得批准后执行 API 调用。

示例 2:机器用户的无头登录

/opt/apigee/apigee-openldap/bin/acurl -u jenkins-bot@apigee.com:Secret123! http://MS_IP_DNS:8080/v1/organizations

此命令会通过密码授权直接进行身份验证,并立即执行 API 调用。

示例 3:重复使用缓存的令牌

/opt/apigee/apigee-openldap/bin/acurl http://MS_IP_DNS:8080/v1/users

由于令牌已在之前的步骤中缓存,因此您无需再次提供 -u 实参。该实用程序会读取缓存的令牌并自动注入。