关于 acurl 和 get_token

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档
信息

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

  • 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 提供了一个 ZIP 文件,其中包含 acurl(1)get_token(1) 和一个安装脚本。

如需安装 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
  • 对于私有云客户,请与管理员联系以获取相应的 SSO 端点。

使用动态密码(SAML 必需)

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

如需获取动态密码,请执行以下操作

  1. 在浏览器中输入以下网址:
    • 对于没有可用区的 Cloud 客户:
      https://login.apigee.com/passcode
    • 对于具有可用区的 Cloud 客户:
      https://zone_name.login.apigee.com/passcode
    • 对于私有云客户,请与管理员联系以获取相应的 SSO 端点。
  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