将外部 IDP 与 Edge Management API 搭配使用

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

curl -u USER_NAME:PASSWORD https://MS_IP_DNS:8080/v1/organizations/ORG_NAME

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

curl -H "Authorization: Bearer ACCESS_TOKEN" https://MS_IP_DNS:8080/v1/organizations/ORG_NAME

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

使用 get_token 获取和刷新令牌

get_token 实用程序会使用您的基本身份验证凭据(在某些情况下是密码)来换取 OAuth2 访问令牌和刷新令牌。get_token 实用程序接受您的凭据,并返回有效的访问令牌。如果令牌可以刷新,实用程序将刷新并返回该令牌。如果刷新令牌过期,则系统会提示您提供用户凭据。

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

如需获取 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 是托管 Apigee SSO 模块的机器的 IP 地址或 DNS 名称。如果您在 Apigee SSO 中配置了 TLS,请使用 https 和正确的 TLS 端口号。

  2. 解压缩 ssocli-bundle.zip 软件包,如以下示例所示:
    unzip ssocli-bundle.zip
  3. /usr/local/bin 中安装 get_token,如以下示例所示:
    ./install -b PATH

    -b 选项指定了其他位置。

  4. SSO_LOGIN_URL 环境变量设置为您的登录网址,格式如下:
    export SSO_LOGIN_URL="http://EDGE_SSO_IP_DNS:9099"

    其中,EDGE_SSO_IP_DNS 是托管 Apigee SSO 模块的机器的 IP 地址。如果您在 Apigee SSO 中配置了 TLS,请使用 https 和正确的 TLS 端口号。

  5. (仅限 SAML)在浏览器中,转到以下网址以获取一次性密码:
    http://EDGE_SSO_IP_DNS:9099/passcode

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

    此请求会返回一个一次性密码,在您刷新该网址以获取新密码或使用与 get_token 搭配使用的密码生成访问令牌之前,该密码将一直有效。

    请注意,只有在通过 SAML IDP 进行身份验证时,您才能使用密码。您无法使用密码通过 LDAP IDP 进行身份验证。

  6. 调用 get_token 以获取 OAuth2 访问令牌,如以下示例所示:
    get_token -u EMAIL_ADDRESS

    其中,EMAIL_ADDRESS 是 Edge 用户的电子邮件地址。

    (仅限 SAML)除了电子邮件地址之外,还要在命令行中输入密码,如以下示例所示:

    get_token -u EMAIL_ADDRESS -p PASSCODE

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

  7. 将访问令牌作为 Bearer 标头传递给 Edge Management API 调用,如以下示例所示:
    curl -H "Authorization: Bearer ACCESS_TOKEN"
      https://MS_IP:8080/v1/organizations/ORG_NAME
  8. 首次获取新的访问令牌后,您可以获取访问令牌,然后在单个命令中将其传递给 API 调用,如以下示例所示:
    header=`get_token` && curl -H "Authorization: Bearer $header"
      https://MS_IP:8080/v1/o/ORG_NAME

    使用这类命令时,如果访问令牌已过期,则系统会自动刷新令牌,直到刷新令牌过期为止。

(仅限 SAML)刷新令牌到期后,get_token 会提示您输入新密码。您必须导航到上面第 3 步中显示的网址并生成新的密码,才能生成新的 OAuth 访问令牌。

使用 Management API 获取和刷新令牌

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

将 OAuth2 安全性与 Apigee Edge Management API 搭配使用中记录的 API 调用之间的唯一区别在于,调用的网址必须引用您的地区名称。此外,如需使用 SAML IDP 生成初始访问令牌,您必须添加密码,如上述过程的第 3 步中所示。

如需授权,请在 Authorization 标头中传递预留的 OAuth2 客户端凭据。此调用会将访问令牌和刷新令牌输出到屏幕上。

获取访问令牌

(LDAP) 使用以下 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 \
  http://EDGE_SSO_IP_DNS:9099/oauth/token -s \
  -d 'grant_type=password&username=USER_EMAIL&password=USER_PASSWORD'

(SAML) 使用以下 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'

请注意,使用 SAML IDP 进行身份验证时需要临时密码,而 LDAP IDP 则不需要。

刷新访问令牌

如需稍后刷新访问令牌,请使用以下包含刷新令牌的调用:

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=REFRESH_TOKEN'