适用于私有云的 Edge v4.18.01
将 SAML 与 Edge API 搭配使用时,您从 SAML 断言中获取 OAuth2 访问令牌和刷新令牌的过程称为通行密钥流程。在通行密钥流程中,您使用浏览器获取一次性通行密钥,然后使用该通行密钥获取 OAuth2 令牌。
不过,您的开发环境可能支持常见开发任务的自动化,例如测试自动化或持续集成/持续部署 (CI/CD)。如需在启用 SAML 时自动执行这些任务,您需要一种方法来获取和刷新 OAuth2 令牌,而无需从浏览器复制/粘贴通行密钥。
Edge 支持通过使用机器用户自动生成令牌。机器用户无需指定通行密钥即可获取 OAuth2 令牌。也就是说,您可以使用 Edge Management API 完全自动执行获取和刷新 OAuth2 令牌的流程。
创建机器用户
使用 apigee-ssoadminapi.sh 实用程序为 SAML 组织创建机器用户。如需了解详情,请参阅使用 apigee-ssoadminapi.sh。您可以创建一个供所有组织使用的机器用户,也可以为每个组织创建单独的机器用户。
机器用户会在 Edge 数据存储区中创建并存储,而不是在 SAML 身份提供程序中。因此,您无需负责使用 Edge 界面和 Edge 管理 API 来维护机器用户。
创建机器用户时,您必须指定电子邮件地址和密码。创建机器用户后,您可以将其分配给一个或多个组织。
如需创建机器用户,请执行以下操作:
- 使用以下 apigee-ssoadminapi.sh 命令创建机器用户:
> apigee-ssoadminapi.sh saml machineuser add --admin SSO_ADMIN_NAME --secret SSO_ADMIN_SECRET --host edge_sso_IP_or_DNS -u machine_user_email -p machine_user_password
其中:- SSO_ADMIN_NAME 是用于配置 Edge SSO 模块的配置文件中 SSO_ADMIN_NAME 属性定义的管理员用户名。默认值为 ssoadmin。
- SSO_ADMIN_SECRET 是配置文件中的 SSO_ADMIN_SECRET 属性指定的管理员密码。
在此示例中,您可以省略 --port 和 --ssl 的值,因为 apigee-sso 模块会使用默认值(--port 为 9099,--ssl 为 http)。如果您的安装不使用这些默认值,请酌情指定这些值。
- 登录 Edge 界面,将机器用户的电子邮件地址添加到您的组织,并为机器用户分配必要的角色。如需了解详情,请参阅添加全球用户。
获取和刷新机器用户令牌
使用 Edge API 通过传递机器用户的凭据(而非通行密钥)来获取和刷新 OAuth2 令牌。
如需为机器用户获取 OAuth2 令牌,请执行以下操作:
- 使用以下 API 调用生成初始访问令牌和刷新令牌:
> 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 /
http://edge_sso_IP_DNS:9099/oauth/token -s /
-d 'grant_type=password&username=m_user_email&password=m_user_password '
该调用会将访问令牌和刷新令牌输出到屏幕。保存令牌以备日后使用。 - 将访问令牌作为 Bearer 标头传递给 Edge 管理 API 调用:
> curl -H "Authorization: Bearer access_token" http://ms_IP_DNS:8080/v1/organizations/orgName
其中 orgName 是包含机器用户的组织的名称。 - 如需稍后刷新访问令牌,请使用包含刷新令牌的以下调用:
> 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 /
http://edge_sso_IP_DNS:9099/oauth/token /
-d 'grant_type=refresh_token&refresh_token=refreshToken'
使用 Edge Management API 创建机器用户
您可以使用 Edge 管理 API 创建机器用户,而不是使用 apigee-ssoadminapi.sh 实用程序。如需创建机器用户,请执行以下操作:
- 使用以下 c网址 命令为 ssoadmin 用户(apigee-sso 的管理员账号的用户名)获取令牌:
> curl "http://edge_sso_IP_DNS:9099/oauth/token" -i -X POST /
-H 'Accept: application/json' / -H 'Content-Type: application/x-www-form-urlencoded' /
-d "response_type=token" -d "grant_type=client_credentials" /
--data-urlencode "client_secret=SSO_ADMIN_SECRET" /
--data-urlencode "client_id=ssoadmin"
其中 SSO_ADMIN_SECRET 是您在安装 apigee-sso 时设置的管理员密码,如配置文件中的 SSO_ADMIN_SECRET 属性所指定。
此命令会显示您进行下一次调用所需的令牌。 - 使用以下 c网址 命令创建机器用户,并传递您在上一步中收到的令牌:
> curl "http://edge_sso_IP_DNS:9099/Users" -i -X POST /
-H "Accept: application/json" -H "Content-Type: application/json" /
-d '{"userName" : "machine_user_email", "name" : {"formatted":"DevOps", "familyName" : "last_name", "givenName" : "first_name"}, "emails" : [ {"value" : "machine_user_email", "primary" : true } ], "active" : true, "verified" : true, "password" : "machine_user_password" }' /
-H "Authorization: Bearer token"
您需要在后续步骤中使用机器用户密码。 - 登录 Edge 界面,将机器用户的电子邮件地址添加到您的组织,然后为机器用户分配必要的角色。如需了解详情,请参阅添加全球用户。