您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 info
将 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。
- 输入以下命令:
usermgmt_platform create系统会显示身份区域列表:
myzone1 myzone2 - 在提示符处输入区域的名称:
Enter a zone name: myzone1 - 输入机器用户的用户名:
Create a Machine User Username: machineuser1@mycompany.com - 输入机器用户的密码。在系统提示时重新输入密码。
Password: password Re-enter password: password用户已创建。
Created machine user machineuser1@mycompany.com
列出身份区域中的所有机器用户
使用 usermgmt_platform list 命令列出身份区域中的所有机器用户。如需查看受支持的平台列表,请参阅使用 CLI。
- 输入以下命令:
系统会显示身份区域列表:usermgmt_platform listmyzone1 myzone2 - 在提示符处输入区域的名称:
Enter a zone name: myzone1系统会显示身份区域中的机器用户列表:
Machine users in the zone: machineuser1@mycompany.com
重置身份区域中机器用户的密码
使用 usermgmt_platform reset 命令重置身份区域中机器用户的密码。如需查看受支持的平台列表,请参阅使用 CLI。
- 输入以下命令:
usermgmt_platform reset系统会显示身份区域列表:
myzone1 myzone2 - 在提示符处输入区域的名称:
Enter a zone name: myzone1 - 输入要为其重置密码的机器用户的用户名:
Reset User Password Enter the username for the machine user Username: machineuser1@mycompany.com - 输入机器用户的新密码。在系统提示时重新输入密码。
Enter the new password: password Re-enter password: password密码已重置。
Reset password for machine user machineuser1@mycompany.com
删除身份区域中的机器用户
使用 usermgmt_platform delete 命令删除身份区域中的机器用户。如需查看受支持的平台列表,请参阅使用 CLI。
- 输入以下命令:
系统会显示身份区域列表:usermgmt_platform deletemyzone1 myzone2 - 在提示符处输入区域的名称:
Enter a zone name: myzone1 - 输入要删除的机器用户的用户名:
Delete User Enter the username for the machine user Username: machineuser1@mycompany.com机器用户已删除。
Deleted user machineuser1@mycompany.com
在 Edge 组织中为机器用户分配所需角色
使用界面将机器用户添加到已启用 SAML 的 Edge 组织,并为其分配所需角色(例如组织管理员), 如 添加用户中所述。
获取机器用户的 OAuth2 令牌
您可以使用
acurl(1) 和 get_token(1) 实用程序自动执行令牌生成过程并处理机器用户的令牌缓存,如
机器用户的 OAuth2 和 SAML 区域中的机器用户中所述。
如需使用 curl 手动获取机器用户的 OAuth2 令牌,请执行以下操作:
- 使用您偏好的网址编码工具对机器用户的用户名和密码进行编码。
警告:请使用
内部 网址编码工具,以确保机器用户凭据不会泄露。 - 通过调用 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。 - 将访问令牌作为 Bearer 标头传递给 Edge 管理 API 调用:
curl -H "Authorization: Bearer ACCESS_TOKEN" \ https://api.enterprise.apigee.com/v1/organizations/orgName
- 当访问令牌过期时,您可以将刷新令牌发送到 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) Copyright 2023 Google LLC
usermgmt、acurl 和 get_token 工具是根据您对 Google Cloud Platform 的使用协议(包括 https://cloud.google.com/terms/service-terms 提供的服务专用条款)以“软件”的形式提供的。