使用 SAML 访问 Edge API

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

SAML 支持单点登录 (SSO) 环境。通过将 SAML 与 Edge 搭配使用,您可以支持单点登录 以及提供并支持 SAML。

前提条件:您必须至少启用 SAML 然后才能使用它访问 Edge API。

SAML 与 OAuth2 之间的区别

设置 SAML 后,使用它与使用 OAuth2 访问 Edge API。调用 Edge API 时,您需要将 OAuth2 访问令牌添加到 你的请求

在访问 Edge API 时,SAML 和 OAuth2 之间的主要区别在于: 您将获得令牌。使用 SAML,在获取您的 令牌对:

  1. 区域:面向公有云用户的 Edge 必须在获取令牌时引用其区域名称。
  2. 密码:请求访问/刷新时包含一次性密码 令牌对。

SAML 在 Edge OAuth2 服务上使用相同的端点,只是添加了适当的可用区名称。

如要通过 SAML 获取访问令牌,您可以使用本部分所述的以下方法之一:

此外,您还可以为机器用户自动执行令牌生成流程,如自动执行令牌生成流程中所述。

使用 get_token 获取访问令牌

您可以使用 get_token 实用程序来交换 OAuth2 访问权限和 刷新您用于 SAML 的令牌。

如需使用 get_token 获取访问令牌,请执行以下操作

  1. SSO_LOGIN_URL 环境变量设置为您的登录网址。登录网址包含 以下表单:
    https://zoneName.login.apigee.com

    例如,对于名为“acme”的区域,将 SSO_LOGIN_URL 设置为“https://acme.login.apigee.com”, 如下例所示:

    export SSO_LOGIN_URL=https://acme.login.apigee.com
  2. 调用 get_token 以获取 OAuth2 访问令牌:
    get_token -u me@example.com

    系统会提示您访问显示的网址以获取一次性密码:

    Get passcode from https://acme.login.apigee.com/passcode
    [Note:  Passcode can be used only time time and expires] Input passcode (no spaces) and then press ENTER:

    如果您最近未通过身份提供方登录,系统会提示您登录 位置

    此网址会返回一个一次性密码,该密码在您刷新该网址以 获取新密码,或将密码与 get_token 搭配使用来生成 访问令牌。例如:

  3. 输入密码。get_token 实用程序会获取 OAuth2 令牌, 将访问令牌输出到 stdout,并将访问令牌和刷新令牌写入 发送至 ~/.sso-cli

  4. 调用 Edge API 并在 Authorization: Bearer 中传递访问令牌 标头中,如以下示例所示:
    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"

    访问令牌的值可从 stdout 复制。

    此示例可获取有关指定组织的详细信息。如需查看完整的管理列表 API 端点,请参阅 Apigee Edge API 参考文档

访问令牌过期后,您可以再次调用 get_token 来获取新的访问权限 令牌。例如:

get_token -u me@example.com

在刷新令牌过期之前,系统不会提示您输入新密码。

当刷新令牌过期后,get_token 会提示您输入新密码。您必须 您必须先生成新的密码,然后才能生成新的 OAuth2 访问令牌。

通过 Edge OAuth2 服务获取访问令牌

您可以使用 Edge OAuth2 服务获取与 SAML 搭配使用的访问令牌。进行身份验证 您需要通过在初始请求中使用密码来获取访问/刷新 获取新的令牌对。

如需使用 Edge API 获取令牌对,请执行以下操作:

  1. 在浏览器中,访问以下网址以获取一次性密码:
    https://zoneName.login.apigee.com/passcode

    例如,对于名为“acme”的区域,请转至以下网址:

    https://acme.login.apigee.com/passcode

    如果您最近未通过身份提供方登录,系统会提示您登录 位置

    此网址会返回一个一次性密码,该密码将作为您获取令牌的凭据,它会一直有效,直到您刷新该网址以 获取新密码,也可以结合使用以下密码和 get_token 来生成 访问令牌。例如:

  2. 向 Edge API 发送请求,如以下示例所示:
    curl https://zoneName.login.apigee.com/oauth/token \
          -s \
          -H "Accept: application/json" \
          -d 'grant_type=password&response_type=token&passcode=passcode'

    passcode 充当您的授权凭据。

    其中:

    • Authorization 标头为“Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0”(使用此 精确值)。
    • 请求类型为 POST
    • 请求正文包含以下内容: <ph type="x-smartling-placeholder">
        </ph>
      • grant_type 是“password”。
      • response_type 是“token”。
      • passcode,其中 passcode 是上一步中返回的密码。

    该调用会将访问令牌和刷新令牌输出到屏幕上。

如需刷新访问令牌,请执行以下操作

欢迎向https://zoneName.login.apigee.com/oauth/token提交请求。 如下例所示:

curl https://zoneName.login.apigee.com/oauth/token \
      -d 'grant_type=refresh_token&refresh_token=REFRESH_TOKEN'

其中:

  • 请求正文包含以下内容: <ph type="x-smartling-placeholder">
      </ph>
    • grant_type 为“refresh_token”。
    • refresh_token 是刷新令牌的值。
  • Authorization 标头为“Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0”(使用此 精确值)。
  • 请求类型为 POST

通过 SAML 访问 Edge API

您可以使用 curl 或 Apigee 便捷实用程序 acurl 等工具 更改为 访问 Edge API。

使用 curl,您可以调用 Edge API 并在 Authorization: Bearer 标头中,如以下示例所示:

curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -H "Authorization: Bearer ACCESS_TOKEN"

使用 acurl 时,您无需指定 Authorization 标头。例如:

acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

这些示例会调用 Edge API 端点,以获取有关给定组织的详细信息。 如需查看 Edge API 端点的完整列表,请参阅 Apigee Edge API 参考文档

关于调用 API 的其他方法,包括确保令牌 请参阅通过 OAuth2 访问 Edge API

SAML 可用区中的计算机用户

您可以使用 acurlget_token 实用程序为自动访问编写脚本 SAML 可用区中的机器用户可以使用 Edge API。 以下示例展示了如何 使用get_token 请求访问令牌,然后将令牌值添加到 curl 调用:

  USER=me@example.com
  PASS=not-that-secret
  TOKEN=$(get_token -u $USER:$PASS -m '' --force-basic-auth)
  curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'

在上面的示例中,将 -m 的值设置为空字符串会阻止机器用户 避免系统提示输入 MFA 代码使用 --force-basic-auth 标志会覆盖 由 SAML 区域请求触发的密码标准提示。

或者,您也可以使用 acurl 实用程序将令牌请求和 curl 调用结合使用。 例如:

  USER=me@example.com
  PASS=not-that-secret
  acurl -u $USER:$PASS -m '' --force-basic-auth 'https://api.enterprise.apigee.com/v1/organizations/...'