将 SAML 与 Edge Management API 搭配使用

适用于私有云的 Edge v4.18.05

基本身份验证是在调用 Edge Management 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 的 Maven 脚本、Shell 脚本、apigeetool 等 支持基本身份验证的 Management API 调用不再有效。您必须更新所有 API 调用和 使用基本身份验证在 Bearer 标头中传递 OAuth2 访问令牌的脚本。

使用 get_token 获取和刷新令牌

get_token 实用程序 将您的基本身份验证凭据和密码交换为 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 是机器的 DNS 名称的 IP 地址 托管 Edge SSO 模块的节点。如果您在 Edge 单点登录 (SSO) 上配置了 TLS,请使用 https 和 正确的 TLS 端口号。

  2. 解压缩 ssocli-bundle.zip 软件包:
    unzip ssocli-bundle.zip
  3. 在以下位置安装 get_token/usr/local/bin:
    >./install:使用 -b 选项用于指定 其他位置:>./install -b 路径
  4. 设置 SSO_LOGIN_URL 环境变量,格式如下:
    导出 SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

    其中,edge_sso_IP_DNS 是机器的 DNS 名称的 IP 地址edge_sso_IP_DNS 托管 Edge SSO 模块的节点。如果您在 Edge SSO 上配置了 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 -H “授权:不记名” access_token" https://ms_IP:8080/v1/organizations/orgName

    首次获得新的访问令牌后,您可以获取该访问令牌并 请通过单个命令将其传递给 API 调用,如下所示:
    >header=`get_token` && curl -H “授权:不记名 $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 Management 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'