您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 info
SAML 支持单点登录 (SSO) 环境。通过将 SAML 与 Edge 结合使用,除了您提供的其他也支持 SAML 的服务之外,您还可以支持将 SSO 用于 Edge 界面和 API。
前提条件: 您必须先为至少 一个组织启用 SAML,然后才能使用它来访问 Edge API。
SAML 与 OAuth2 之间的区别
设置 SAML 后,使用它与使用 OAuth2 访问 Edge API 非常相似。调用 Edge API 时,您需要在请求中添加 OAuth2 访问令牌,在 您的请求中。
访问 Edge API 时,SAML 和 OAuth2 之间的主要区别在于获取令牌的方式 。使用 SAML 时,您必须在获取您的 令牌对时添加以下内容:
- 区域: Edge for Public Cloud 用户在获取令牌时必须引用其区域名称。
- 密码: 请求访问/刷新 令牌对时,请添加一次性密码。
SAML 在 Edge OAuth2 服务上使用相同的端点,并添加了相应的区域名称。
如需使用 SAML 获取访问令牌,您可以使用本部分中介绍的以下方法之一:
此外,您还可以为机器用户自动执行令牌生成过程,如自动执行令牌生成过程中所述。
使用 get_token 获取访问令牌
您可以使用 get_token 实用程序将凭据交换为 OAuth2 访问令牌和
刷新令牌,以便与 SAML 搭配使用。
如需使用 get_token 获取访问令牌,请执行以下操作:
- 将
SSO_LOGIN_URL环境变量设置为您的登录网址。登录网址的格式如下:https://zoneName.login.apigee.com
例如,对于名为“acme”的区域,请将
SSO_LOGIN_URL设置为“https://acme.login.apigee.com”, 如以下示例所示:export SSO_LOGIN_URL=https://acme.login.apigee.com
- 调用
get_token以获取 OAuth2 访问令牌:get_token -u me@example.com
系统会提示您访问显示的网址以获取动态密码:
Get passcode from https://acme.login.apigee.com/passcode [Note: Passcode can be used only time time and expires] Input passcode (no spaces) and then press ENTER:
如果您最近没有通过身份提供方登录,系统会提示您登录 。
此网址会返回一个动态密码,该密码在您刷新该网址以获取新密码之前一直有效,或者您可以使用该密码和
get_token生成访问令牌。例如:
-
输入密码。
get_token实用程序会获取 OAuth2 令牌, 将访问令牌输出到stdout,并将访问令牌和刷新令牌 写入~/.sso-cli。 - 调用 Edge API,并在
Authorization: Bearer标头中传递访问令牌,如以下示例所示:curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \ -H "Authorization: Bearer ACCESS_TOKEN"
您可以从
stdout复制访问令牌的值。此示例获取有关给定组织的详细信息。如需查看管理 API 端点的完整列表,请参阅 Apigee Edge API 参考文档。
访问令牌过期后,您可以再次调用 get_token 以获取新的访问
令牌。例如:
get_token -u me@example.com
在刷新令牌过期之前,系统不会提示您输入新密码。
刷新令牌过期后,get_token 会提示您输入新密码。您必须
先生成新密码,然后才能生成新的 OAuth2 访问令牌。
使用 Edge OAuth2 服务获取访问令牌
您可以使用 Edge OAuth2 服务获取与 SAML 搭配使用的访问令牌。如需通过 Edge API 进行身份验证,您需要在初始请求中使用密码来获取访问/刷新令牌对,并再次使用密码来获取新的令牌对。
如需使用 Edge API 获取令牌对,请执行以下操作:
- 在浏览器中,前往以下网址以获取动态密码:
https://zoneName.login.apigee.com/passcode
例如,对于名为“acme”的区域,请前往以下网址:
https://acme.login.apigee.com/passcode
如果您最近没有通过身份提供方登录,系统会提示您登录 。
此网址会返回一个动态密码,该密码可作为您获取令牌的凭据,并且在您刷新该网址以获取新密码之前一直有效,或者您可以使用该密码和
get_token生成访问令牌。例如:
- 向 Edge API 发送请求,如以下示例所示:
curl https://zoneName.login.apigee.com/oauth/token \ -s \ -H "Accept: application/json" \ -d 'grant_type=password&response_type=token&passcode=passcode'passcode 可作为授权凭据。
其中:
Authorization标头为 "Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0"(使用此 确切值)。- 请求类型为
POST。 - 请求的正文包含以下内容:
grant_type为“password”。response_type为“token”。passcode,其中 passcode 是上一步返回的密码。
调用会将访问令牌和刷新令牌输出到屏幕。
如需刷新访问令牌,请执行以下操作:
向 https://zoneName.login.apigee.com/oauth/token 提交请求,
如以下示例所示:
curl https://zoneName.login.apigee.com/oauth/token \
-d 'grant_type=refresh_token&refresh_token=REFRESH_TOKEN'其中:
- 请求的正文包含以下内容:
grant_type为“refresh_token”。refresh_token是刷新令牌的值。
Authorization标头为 "Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0"(使用此 确切值)。- 请求类型为
POST。
使用 SAML 访问 Edge API
您可以使用 curl 等工具或 Apigee 便捷实用程序 acurl
来
访问 Edge API。
使用 curl 时,您可以调用 Edge API,并在
Authorization: Bearer 标头中传递访问令牌,如以下示例所示:
curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \ -H "Authorization: Bearer ACCESS_TOKEN"
使用 acurl 时,您无需指定 Authorization 标头。例如:
acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval
这些示例调用 Edge API 端点,以获取有关给定组织的详细信息。 如需查看 Edge API 端点的完整列表,请参阅 Apigee Edge API 参考文档。
如需了解其他调用 API 的方法(包括确保令牌保持 新鲜的方法),请参阅使用 OAuth2 访问 Edge API。
SAML 区域中的机器用户
您可以使用 acurl 和 get_token 实用程序为 SAML 区域中的 机器用户 编写自动访问 Edge API 的脚本。以下示例展示了如何
使用 get_token 请求访问令牌,然后将令牌值添加到 curl 调用中:
USER=me@example.comPASS=not-that-secretTOKEN=$(get_token -u $USER:$PASS -m '' --force-basic-auth)curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'
在上面的示例中,将 -m 的值设置为空字符串可防止系统提示机器用户
输入 MFA 代码。使用 --force-basic-auth 标志会替换由 SAML 区域的请求触发的标准密码提示。
或者,您也可以使用 acurl 实用程序将令牌请求和 curl 调用结合起来。
例如:
USER=me@example.comPASS=not-that-secretacurl -u $USER:$PASS -m '' --force-basic-auth 'https://api.enterprise.apigee.com/v1/organizations/...'