适用于私有云的 Edge v. 4.17.09
在调用 Edge 管理 API 时,使用基本身份验证是进行身份验证的一种方式。例如,您可以向 Edge Management API 发出以下 c网址 请求,以访问有关您组织的信息:
curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName
在此示例中,您使用 c网址 -u 选项传递基本身份验证凭据。或者,您也可以在 Bearer
标头中传递 OAuth2 令牌以进行 Edge Management API 调用。例如:
curl -H "Authorization: Bearer <access_token>" https://ms_IP_DNS:8080/v1/organizations/orgName
启用 SAML 后,您可以选择停用基本身份验证。如果您停用基本身份验证,则所有依赖于支持基本身份验证的 Edge 管理 API 调用的脚本(Maven 脚本、Shell 脚本、apigeetool
等)都将无法再运行。您必须更新所有使用基本身份验证的 API 调用和脚本,以便在 Bearer 标头中传递 OAuth2 访问令牌。
使用 get_token 获取和刷新令牌
get_token
实用程序会将您的基本身份验证凭据和密码交换为 OAuth2 访问令牌和刷新令牌。get_token
实用程序会接受您的凭据并输出有效的访问令牌。如果可以刷新令牌,它将刷新并输出令牌。如果刷新令牌过期,系统会提示用户输入凭据。
get_token
实用程序会将令牌存储在磁盘上,以便在需要时使用。它还会将有效的访问令牌输出到标准输出。
您可以在其中使用 Postman,也可以将其嵌入环境变量中,以便在 curl 中使用。
以下步骤介绍了如何使用 get_token
获取 OAuth2 访问令牌以进行 Edge 管理 API 调用:
- 下载
sso-cli
软件包:curl http://edge_sso_IP_DNS:9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"
其中,edge_sso_IP_DNS 是托管 Edge SSO 模块的机器的 DNS 名称的 IP 地址。如果您在 Edge SSO 上配置了 TLS,请使用
https
和正确的 TLS 端口号。 - 解压缩
ssocli-bundle.zip
软件包:unzip ssocli-bundle.zip
- 在
/usr/local/bin
中安装get_token
:
./install
使用
-b
选项指定其他位置:./install -b path
- 将
SSO_LOGIN_URL
环境变量设置为您的登录网址,格式如下:export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"
其中,edge_sso_IP_DNS 是托管 Edge SSO 模块的机器的 DNS 名称的 IP 地址。如果您在 Edge SSO 上配置了 TLS,请使用
https
和正确的 TLS 端口号。 - 在浏览器中,访问以下网址以获取一次性密码:
http://edge_sso_IP_DNS:9099/passcode
如果您在 Edge SSO 上配置了 TLS,请使用
https
和正确的 TLS 端口号。此网址会返回一个动态密码,该密码在您刷新该网址以获取新密码,或将该密码与
get_token
搭配使用以生成访问令牌之前,都有效。 - 调用
get_token
以获取 OAuth2 访问令牌:
get_token -u emailAddress
其中,emailAddress 是 Edge 用户的电子邮件地址。系统会提示您输入在第 3 步中获得的一次性密码:
One Time Code ( Get one at https://edge_sso_IP.com/passcode ) Enter the passcode if SAML is enabled or press ENTER:
输入密码。
get_token
实用程序会获取 OAuth2 访问令牌,将其输出到屏幕,并将其和刷新令牌写入~/.sso-cli
。您可以使用
get_token
命令,在命令行中输入密码,格式如下:get_token -u emailAddress -p passcode
- 将访问令牌作为 Bearer 标头传递给 Edge 管理 API 调用:
curl -H "Authorization: Bearer access_token" https://ms_IP:8080/v1/organizations/orgName
首次获取新的访问令牌后,您可以通过单个命令获取访问令牌并将其传递给 API 调用,如下所示:
header=`get_token` && curl -H "Authorization: Bearer $header" https://ms_IP:8080/v1/o/orgName
使用这种形式的命令时,如果访问令牌已过期,它会自动刷新,直到刷新令牌过期。
刷新令牌过期后,get_token
会提示您输入新密码。您必须前往上文第 3 步中显示的网址并生成新的通行密钥,然后才能生成新的 OAuth 访问令牌
使用 Management API 获取和刷新令牌
将 OAuth2 安全性与 Apigee Edge Management API 搭配使用中包含说明,介绍了如何使用 Edge Management API 获取和刷新令牌。您还可以使用 Edge API 调用来获取从 SAML 断言生成的令牌。
将 OAuth2 安全功能与 Apigee Edge 管理 API 搭配使用中记录的 API 调用之间的唯一区别在于,调用的网址必须引用您的区域名称。此外,如需生成初始访问令牌,您必须添加通行密钥,如上文第 3 步所示。
例如,您可以使用以下 API 调用生成初始访问令牌和刷新令牌:
curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" / -H "accept: application/json;charset=utf-8" / -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST / https://edge_sso_IP_DNS:9099/oauth/token -s / -d 'grant_type=password&response_type=token&passcode=passcode'
对于授权,请在 Authorization
标头中传递预留的 OAuth2 客户端凭据。该调用会将访问令牌和刷新令牌输出到屏幕。
如需稍后刷新访问令牌,请使用包含刷新令牌的以下调用:
curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" / -H "Accept: application/json;charset=utf-8" / -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST / https://edge_sso_IP_DNS:9099/oauth/token / -d 'grant_type=refresh_token&refresh_token=refreshToken'