适用于私有云的 Edge v4.18.05
将 SAML 与 Edge API 结合使用时,您用来获取 OAuth2 访问权限和 来自 SAML 断言的刷新令牌称为密码流。在设置密码流程时 请使用浏览器获取一次性密码,然后使用该密码获取 OAuth2 令牌。
不过,您的开发环境可能支持使用自动化处理常见的开发任务, 例如测试自动化或持续集成/持续部署 (CI/CD)。为了实现自动化 您需要一种方法来获取和刷新 OAuth2 令牌,而无需 从浏览器复制/粘贴密码。
Edge 支持使用机器用户自动生成令牌。机器用户 无需指定密码就能获取 OAuth2 令牌。这意味着您完全可以 使用 Edge Management API 获取和刷新 OAuth2 令牌的过程。
创建机器用户
使用 apigee-ssoadminapi.sh
实用程序为 SAML 组织创建机器用户。请参阅使用
apigee-ssoadminapi.sh。你可以创建一个机器用户,供你的所有
或为每个组织分别创建计算机用户。
机器用户是在 Edge 数据存储区(而不是您的 SAML 身份)中创建和存储的 提供商。因此,您不负责使用 界面和 Edge Management 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 是由
SSO_ADMIN_NAME
个房源位于 用于配置 Edge SSO 模块的配置文件。默认值为ssoadmin
。 - SSO_ADMIN_SECRET 是由
SSO_ADMIN_SECRET
属性。
在此示例中,您可以省略
--port
和--ssl
,因为apigee-sso
模块使用默认--port
的值为 9099,--ssl
的值为 http。如果您的 安装不使用这些默认值,请根据需要进行指定。 - SSO_ADMIN_NAME 是由
- 登录 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 Management 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 Management API 创建机器用户,而不是使用
apigee-ssoadminapi.sh
实用程序。
如需创建机器用户,请执行以下操作:
- 使用以下
curl
命令为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
属性指定的 配置文件此命令会显示您进行下一次调用所需的令牌。
- 使用以下
curl
命令创建机器用户,并传递您所创建的令牌 在上一步中收到的请求: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 界面并将机器用户的电子邮件添加到您的组织,然后为其分配 授予必要的角色。如需了解详情,请参阅添加全局用户。