关于 acurl 和 get_token

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

Apigee 提供了以下便捷实用程序,可用于生成和传递 OAuth2 访问令牌和刷新令牌。您可以使用这些令牌通过 OAuth(包括 SAML 和 LDAP 工作流)在 Edge API 调用中验证自己的身份:

  • acurl(1):提供了一个便捷的封装容器,用于封装标准 curl 命令。构建对 Edge API 的 HTTP 请求,从 get_token 获取访问令牌和刷新令牌,并将访问令牌传递给 Edge API。
  • get_token(1):使用您的 Apigee 凭据换取可用于调用 Edge API 的访问令牌和刷新令牌。

这两个实用程序都会使用您的 Apigee 帐号凭据(用户名和密码)来换取 OAuth2 令牌。

Apigee 实用程序创建的令牌符合 OAuth 2.0 授权框架规范

使用 Apigee 实用程序获取令牌或访问 Edge API 的身份验证服务器是一项可选操作。您可以实现自己的方案来生成 OAuth2 访问令牌,并在请求中将其发送到 Edge API。

安装 acurl 和 get_token

Apigee 提供了一个包含 acurl(1)get_token(1) 和安装脚本的 ZIP 文件。

如需安装 acurlget_token,请执行以下操作

  1. 在计算机上创建安装目录,或使用默认的 usr/local/bin 目录。
  2. 从 Apigee 下载安装 ZIP 文件:
    curl https://login.apigee.com/resources/scripts/sso-cli/ssocli-bundle.zip -O
  3. 解压缩下载的文件。
  4. 执行安装脚本:
    sudo ./install -b /usr/local/bin

    -b 选项用于指定可执行文件的位置。如果您未指定此选项,安装脚本会在 /usr/local/bin 中安装实用程序。

  5. 测试安装:
        acurl -h
        get_token -h

    如果安装成功,这些命令会返回实用程序的帮助文本。

令牌过期

acurlget_token 会生成时长如下的令牌:

  • 访问令牌会在 12 小时后过期。
  • 刷新令牌的有效期为 30 天。

因此,在成功使用 acurlget_token 进行 API 调用后,您可以继续使用该令牌对 30 天。到期后,您必须重新输入凭据并获取新令牌。

设置 SSO 端点

在首次调用之前,您必须为要与 acurlget_token 搭配使用的 Edge API 设置授权服务器端点。

在终端中,将 SSO_LOGIN_URL 环境变量设置为您的授权服务器端点。例如:

  • 对于没有可用区的 Cloud 客户:
    export SSO_LOGIN_URL=https://login.apigee.com
  • 对于使用以下可用区的 Cloud 客户:
    export SSO_LOGIN_URL=https://zone_name.login.apigee.com
  • 对于私有云客户,请与您的管理员联系,以获取相应的单点登录端点。

使用一次性密码(SAML 必须使用)

当您使用 acurlget_token 进行 API 调用时,您必须向实用程序进行身份验证才能接收令牌对。为此,您可以传递 Apigee 帐号的用户名、密码和 MFA 代码。但是,如果您使用的是 SAML IDP 或不想使用密码,则可以获取一次性代码密码来改用。

如需获取一次性密码,请执行以下操作

  1. 在浏览器中输入以下网址:
    • 对于没有可用区的 Cloud 客户:
      https://login.apigee.com/passcode
    • 对于使用以下可用区的 Cloud 客户:
      https://zone_name.login.apigee.com/passcode
    • 对于私有云客户,请与您的管理员联系,以获取相应的单点登录端点。
  2. 登录您的 Apigee 帐号。
  3. 复制 6 个字符的密码。
  4. acurlget_token-p 选项搭配使用,然后传递密码,如以下示例所示:
    get_token -p 1a2b3c

查看您的令牌

成功执行 acurlget_token 后,这些实用程序会在 ~/.sso-cli 中创建一个包含令牌和其他元数据的数据文件。

要查看令牌,您可以使用如下命令:

get_token -v

此命令会显示已解码的令牌声明,例如:

Decoded token claims:
 {
  "jti": "8018507e-9f34-4a90-bf97-ff226a06b19b",
  "sub": "858217a9-01a1-4111-8525-75ca555f5d5c",
  "scope": [
    "scim.emails.read",
    "scim.me",
    "openid",
    "password.write",
    "approvals.me",
    "scim.ids.read",
    "oauth.approvals"
          ],
  "client_id": "edgecli",
  "cid": "edgecli",
  "azp": "edgecli",
  "grant_type": "password",
  "user_id": "858217a9-01a1-4111-8525-75ca555f5d5c",
  "origin": "usergrid",
  "user_name": "myusername@google.com",
  "email": "myusername@google.com",
  "auth_time": 1597444772,
  "al": 0,
  "rev_sig": "6271c527",
  "iat": 1597444772,
  "exp": 1597487972,
  "iss": "https://login.apigee.com",
  "zid": "uaa",
  "aud": [
    "edgecli",
    "scim.emails",
    "scim",
    "openid",
    "password",
    "approvals",
    "scim.ids",
    "oauth"
        ]
    }
Current timestamp: 1597444983
Existing access token is still valid

(1) 版权所有 2023 Google LLC
acurlget_token 工具以“软件”形式提供,依据的是您在使用 Google Cloud Platform 时须遵守的协议,包括 https://cloud.google.com/terms/service-terms 上列出的“服务专用条款”。