自动生成令牌

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

将 SAML 与 Edge API 搭配使用时,您通过 SAML 断言获取 OAuth2 访问令牌和刷新令牌的过程称为密码流程。通过密码流程,您可以使用浏览器获取一次性密码,然后使用该密码获取 OAuth2 令牌。

但是,您的环境可能支持自动执行常见开发任务,例如测试自动化或持续集成/持续部署 (CI/CD)。如需在启用 SAML 后自动执行这些任务,您需要一种方法来获取和刷新 OAuth2 令牌,而无需从浏览器复制/粘贴密码。

关于计算机用户

Apigee Edge 为已启用 SAML 的组织中的机器用户提供支持。机器用户仅用于实现自动化,不会由真人直接访问。

机器用户可以获取 OAuth2 令牌,而无需指定密码。这意味着您可以使用 Edge API 完全自动执行获取和刷新 OAuth2 令牌的过程。

自动执行令牌生成流程的步骤

如需自动执行令牌生成流程,请执行以下操作:

步骤 说明
1 在 SAML 身份区域中创建机器用户
2 为 Edge 组织中的机器用户分配所需的角色
3 获取机器用户的 OAuth2 令牌

视频:观看一段短视频,了解如何使用机器用户凭据自动访问 Apigee Edge API。

管理 SAML 身份区域的计算机用户

Apigee 提供机器用户管理命令行界面 (CLI) 以创建和管理机器用户帐号。以下部分介绍了使用机器用户管理 CLI 的步骤。

使用 CLI

如需使用机器用户管理 CLI,请先下载并解压缩以下文件: usermgmt.tar.gz(1)

调用 CLI 的格式如下:

usermgmt_platform [command] [flags]

下表总结了支持的平台以及调用机器用户管理 CLI 的相应命令。 (可执行文件位于 usermgmt 目录中。)

平台 32 位 64 位
Linux usermgmt_linux_386 usermgmt_linux_amd64
Mac usermgmt_darwin_386 usermgmt_darwin_amd64
Windows usermgmt_windows_386 usermgmt_windows_amd64

下表总结了可以指定的命令

命令 更多信息
create 在身份区域中创建机器用户
delete 删除身份区域中的机器用户
help 使用 CLI 获取帮助
list 列出身份可用区中的所有机器用户
reset 重置身份区域中机器用户的密码

(可选)您可以传递以下某个标志以显示关于指定命令的帮助:-h--help

登录 CLI

当您在 24 小时内首次运行 CLI 时,系统会提示您输入 zoneadmin 帐号凭据。

Enter your Apigee credentials
Username: zoneadmin-username
Password: zoneadmin-password
If your user is opted with MFA, enter MFA code. Otherwise press enter to skip.
MFA: mfa-code_or_enter_to_skip

机器用户管理 CLI 会在您的本地机器上存储一个访问令牌,因此每 24 小时只需登录一次。

使用 CLI 获取帮助

使用 usermgmt_platform help 命令显示 CLI 使用情况信息。如需查看支持的平台列表,请参阅使用 CLI

usermgmt_platform help

系统会显示以下帮助信息:

A command-line interface (CLI) to manage machine user accounts to automate
Apigee identity zone management. Use the CLI to create, list, delete,
and reset the password for machine users.

Usage:
  usermgmt [flags]
  usermgmt [command]

Available Commands:
  create  Creates a machine users in an identity zone.
  delete  Deletes a machine users in an identity zone.
  help    Help about any command
  list    Lists the machine users in an identity zone.
  reset   Resets the password for a machine user in an identity zone.

Flags:
  -h, --help               help for usermgmt

Use "usermgmt [command] --help" for more information about a command.

通过在命令行中传递命令和 -h--help 标志来显示特定命令的帮助。

例如,如需获取有关 list 命令的帮助,请运行以下命令:

usermgmt_platform list -h

系统会显示以下帮助信息:

Lists the machine users in an identity zone.

Usage:
  usermgmt list [flags]

Flags:
  -h, --help   help for list

在身份区域中创建机器用户

使用 usermgmt_platform create 命令在身份区域中创建机器用户。 如需查看支持的平台列表,请参阅使用 CLI

  1. 输入以下命令:
    usermgmt_platform create

    系统会显示身份区域列表:

    myzone1
    myzone2
  2. 在提示符处输入区域名称:
    Enter a zone name: myzone1
  3. 为机器用户输入用户名:
    Create a Machine User
    Username: machineuser1@mycompany.com
  4. 为机器用户输入密码。出现提示时,重新输入密码。
    Password: password
    Re-enter password: password 

    已创建用户。

    Created machine user machineuser1@mycompany.com

列出身份可用区中的所有计算机用户

使用 usermgmt_platform list 命令列出身份可用区中的所有计算机用户。如需查看支持的平台列表,请参阅使用 CLI

  1. 输入以下命令:
    usermgmt_platform list
    系统随即会显示身份区域列表:
    myzone1
    myzone2
  2. 在提示符处输入区域名称:
    Enter a zone name: myzone1

    系统会显示身份可用区中的计算机用户列表:

    Machine users in the zone:
    machineuser1@mycompany.com
        

重置身份区域中机器用户的密码

您可以使用 usermgmt_platform reset 命令重置身份区域中机器用户的密码。如需查看支持的平台列表,请参阅使用 CLI

  1. 输入以下命令:
    usermgmt_platform reset

    系统会显示身份区域列表:

    myzone1
    myzone2
  2. 在提示符处输入区域名称:
    Enter a zone name: myzone1
  3. 输入要重置密码的机器用户的用户名:
    Reset User Password
    Enter the username for the machine user
    Username: machineuser1@mycompany.com
  4. 为机器用户输入新密码。出现提示时,重新输入密码。
    Enter the new password: password
    Re-enter password: password

    密码已重置。

    Reset password for machine user machineuser1@mycompany.com

删除身份区域中的机器用户

使用 usermgmt_platform delete 命令删除身份可用区中的机器用户。如需查看支持的平台列表,请参阅使用 CLI

  1. 输入以下命令:
    usermgmt_platform delete
    系统随即会显示身份区域列表:
    myzone1
    myzone2
  2. 在提示符处输入区域名称:
    Enter a zone name: myzone1
  3. 输入要删除的机器用户的用户名:
    Delete User
    Enter the username for the machine user
    Username: machineuser1@mycompany.com 

    机器用户已被删除。

    Deleted user machineuser1@mycompany.com

为 Edge 组织中的机器用户分配所需的角色

使用界面,将机器用户添加到启用了 SAML 的 Edge 组织,并为其分配所需的角色(例如组织管理员),如添加用户中所述。

获取机器用户的 OAuth2 令牌

机器用户的 OAuth2SAML 可用区中的机器用户中所述,您可以使用 acurl(1)get_token(1) 实用程序自动执行令牌生成流程并处理机器用户的令牌缓存。

如需使用 curl 手动获取机器用户的 OAuth2 令牌,请执行以下操作:

  1. 使用您的首选网址编码工具对机器用户的用户名和密码进行编码。

    警告:请使用内部网址编码工具来确保机器用户凭据不会遭到破解。

  2. 通过调用 SAML 令牌端点生成初始访问令牌和刷新令牌,如以下示例所示:
    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://zoneName.login.apigee.com/oauth/token -s \
      -d 'grant_type=password&username=machineusername&password=machineuserpassword'

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

  3. 将访问令牌作为 Bearer 标头传递给 Edge Management API 调用:
    curl -H "Authorization: Bearer ACCESS_TOKEN" \
      https://api.enterprise.apigee.com/v1/organizations/orgName
  4. 访问令牌到期后,您可以通过将刷新令牌发送到 SAML 令牌端点进行刷新,如以下示例所示:
    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://zoneName.login.apigee.com/oauth/token \
      -d 'grant_type=refresh_token&refresh_token=REFRESH_TOKEN'

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