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 实参。该实用程序会读取缓存的令牌并自动注入。