将 SAML 与 Edge Management API 搭配使用

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

curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName

在此示例中,您使用 c网址 -u 选项传递基本身份验证凭据。或者,您也可以在 Bearer 标头中传递 OAuth2 令牌以进行 Edge 管理 API 调用。例如:

curl -H "Authorization: Bearer access_token" https://ms_IP_DNS:8080/v1/organizations/orgName

启用 SAML 后,您可以选择停用基本身份验证。如果停用基本身份验证,则依赖于支持基本身份验证的 Edge Management API 调用的所有脚本(Maven 脚本、Shell 脚本、apigeetool 等)都无法再使用。您必须更新所有使用基本身份验证的 API 调用和脚本,以便在 Bearer 标头中传递 OAuth2 访问令牌。

使用 get_token 获取和刷新令牌

get_token 实用程序使用您的基本 Auth 凭据和密码换取 OAuth2 访问令牌和刷新令牌。get_token 实用程序接受您的凭据并输出有效的访问令牌。如果某个令牌可以刷新,则它将刷新并输出该令牌。如果刷新令牌过期,则系统会提示您提供用户凭据。

get_token 实用程序将令牌存储在磁盘上,在需要时可供使用。它还会将有效的访问令牌输出到 stdout。 然后,您可以使用 Postman 或将其嵌入环境变量中,以便在 curl 中使用。

以下步骤介绍了如何使用 get_token 获取 OAuth2 访问令牌,以便调用 Edge Management API:

  1. 下载 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 地址。如果您在边缘单点登录中配置了 TLS,请使用 https 和正确的 TLS 端口号。

  2. 解压缩 ssocli-bundle.zip 软件包:
    unzip ssocli-bundle.zip
  3. /usr/local/bin 中安装 get_token
    > ./install 使用 -b 选项指定其他位置:> ./install -b path
  4. SSO_LOGIN_URL 环境变量设置为您的登录网址,格式如下:
    export SSO_LOGIN_网址="http://edge_sso_IP_DNS:9099"

    其中 edge_sso_IP_DNS 是托管 Edge SSO 模块的机器的 DNS 名称的 IP 地址。如果您为边缘单点登录配置了 TLS,请使用 https 和正确的 TLS 端口号。
  5. 在浏览器中,转到以下网址以获取一次性密码:
    http://edge_sso_IP_DNS:9099/passcode

    如果您在 Edge SSO 中配置了 TLS,请使用 https 和正确的 TLS 端口号。

    注意:如果您目前尚未通过身份提供方登录,系统会提示您登录。

    此网址返回的一次性密码将一直有效,直到您刷新该网址以获取新密码,或您将密码与 get_token 配合使用来生成访问令牌。
  6. 调用 get_token 以获取 OAuth2 访问令牌:
    > get_token -u emailAddress

    其中 emailAddress 是 Edge 用户的电子邮件地址。系统会提示您输入您在第 3 步获得的一次性密码:
    一次性代码(访问 https://edge_sso_IP.com/passcode 获取一个)
    如果已启用 SAML,请输入密码或按 Enter 键


    输入密码。get_token 实用程序获取 OAuth2 访问令牌,将其输出到屏幕,然后将此令牌和刷新令牌写入 ~/.sso-cli

    您可以在命令行中使用 get_token 命令输入密码,格式如下:
    > get_token -u emailAddress -p 密码
  7. 将访问令牌作为 Bearer 标头传递给 Edge Management API 调用。
    > curl -token -H "Authorization: Bearer access_token" https://ms_IP:8080/v1/organizations/orgName

    获取新的访问令牌后,您可以在以下 API 中首次获取一个新的访问令牌,如下所示:
    获取新的访问令牌,如下所示:

当刷新令牌过期后,get_token 会提示您输入新密码。您必须转到上文第 3 步中显示的网址并生成新的密码,才能生成新的 OAuth 访问令牌

使用 Management API 获取和刷新令牌

将 OAuth2 安全性与 Apigee Edge Management API 搭配使用包含有关如何使用 Edge Management API 获取和刷新令牌的说明。您还可以使用 Edge API 调用获取通过 SAML 断言生成的令牌。

将 OAuth2 安全性与 Apigee Edge Management 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'