<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
OAuth 已成为领先的 API 授权协议。版本 OAuth 2.0 规范。
OAuth 是一种协议,让应用最终用户能够进行授权 应用来代表用户执行操作。为此,应用需要通过 令牌(从 API 提供商获取)。API 提供方对应用端进行身份验证 用户的凭据,确保用户已向应用授权,然后颁发访问令牌 。当应用使用受保护的 API 时,Apigee Edge 会检查访问令牌以确保 确认订单有效且未过期。作为 API 提供方,您需要公开端点 让应用能够获取访问令牌
为方便您开始使用 OAuth,Apigee Edge 您可以利用 政策来配置和强制执行 OAuth,而无需 编写代码。在本主题中,您将了解如何保护 API、如何获取访问权限 令牌,以及如何使用这些访问令牌访问受保护的 API。
而默认的 OAuth 配置 组织
为方便起见,Apigee Edge 上的所有组织都预先配置了一组 OAuth 2.0 实现客户端凭据授权类型的端点。客户 凭据授权类型定义了发出访问令牌以换取 凭据。这些应用凭据就是使用方密钥和密钥对 在组织中注册的每个应用都会出现 Apigee Edge 问题。“客户端凭据” 是指使用方密钥和密钥对本身。
如需详细了解如何向使用 Edge 开发者服务的应用颁发凭据,请参阅 注册应用和管理密钥。
因此,“升级”根据 API 密钥配置 API 安全机制 对 OAuth 客户端凭据进行验证。两种方案使用相同的使用方键值和密钥 验证客户端应用。不同之处在于,客户端凭据 因为您可以根据需要轻松撤消访问令牌,而无需撤消 应用的使用方键值。要使用默认的 OAuth 端点,您可以使用任何使用方密钥 以及为您组织中的应用生成的密钥,用于从令牌中检索访问令牌 端点。(您甚至可以为已拥有使用方密钥和 secrets.)
有关客户端凭据授权的完整规范,请参阅 OAuth 2.0 规格设计。
使用政策保护您的 API
您需要先配置 API 以验证 OAuth 访问权限,然后才能使用访问令牌 令牌化。为此,您需要配置一个 API 代理 验证访问令牌。这意味着,每当应用向 要使用您的某个 API,该应用必须随 API 请求一起提供有效的访问令牌。 Apigee Edge 可处理生成、存储和验证访问令牌后的复杂工作 呈现的内容
在创建 API 时,您可以轻松向 API 中添加 OAuth 验证, 新的 API 代理在创建新的 API 代理时,您可以添加功能。如 您可以选中单选按钮,添加对 OAuth 2.0 访问令牌的验证 使用 OAuth v2.0 访问令牌保护安全旁边。选择此选项后,您会看到两个 政策将关联到新创建的 API 代理,一个用于验证访问令牌,另一个用于验证访问令牌 在访问令牌通过验证后将其剥离。
此外,当您选择 Secure with OAuth v2.0 Access Tokens 选项时, 发布 API 产品复选框将变为可选状态,并且系统会自动 已选择。如果您希望在构建新 API 时自动生成商品,请选中此选项 代理。系统将创建自动生成的商品,并将其与新的 API 代理相关联。如果您 已有要与此新 API 关联的现有产品,请务必清除 复选框,这样就不会创建不必要的商品。有关产品的信息,请参阅 什么是 API 产品?
如果您需要为 API 代理启用访问令牌验证 ,您只需将 OAuthV2 类型的政策附加到您 保护。OAuthV2 政策的工作原理是指定操作。如果您想 要验证访问令牌,您需要指定名为 VerifyAccessToken 的操作。(其他 是 GenerateAccessToken 和 GenerateRefreshToken。您将在设置 OAuth 端点。)
VerifyOAuthTokens 政策 OAuthV2 类型
验证访问令牌的政策示例如下所示。(这些设置是 详见下表)。
<OAuthV2 name="VerifyOAuthTokens"> <Operation>VerifyAccessToken</Operation> </OAuthV2>
政策设置
名称 | 说明 | 默认 | 是否必需? |
---|---|---|---|
OAuthV2 |
政策类型 | ||
name |
API 代理端点中引用的政策的名称 配置。 | 不适用 | 是 |
Operation |
要由 OAuthV2 政策执行的操作。指定 VerifyAccessToken 后 您需要配置该政策以检查对访问令牌的请求,并验证对 令牌有效、未过期,且已获准使用请求的 API 资源 (URI)。(为进行这项检查,政策会读取应用获准使用的 API 产品 consume.) | 不适用 | 是 |
如需在管理界面中创建此政策,请导航至 API >API 代理。
从 API 代理列表中,选择 weatherapi。
从 weatherapi 的 Overview 中,选择 开发 视图。
从下拉菜单中选择新建政策 >OAuth 2.0 版
选择 OAuth v2.0 政策后,新建政策配置菜单 。
为您的政策提供一个描述性名称,并确保选择 Attach Policy。 流 PreFlow 和请求作为政策连接设置。
选择添加,系统即会创建政策并将其附加到 weatherapi 的请求 PreFlow。
添加政策后,下方的请求 PreFlow 配置将显示在 Designer 窗格设计。
如果您在本地使用文本编辑器或 IDE 进行工作,请将 向您要保护的 API 代理发出 PreFlow 请求的政策:
<PreFlow> <Request> <Step><Name>VerifyOAuthTokens</Name></Step> </Request> </PreFlow>
通过将政策附加到请求 PreFlow,可以确保始终强制执行该政策 。
现在,您已使用 OAuth 2.0 客户端凭据保护 API。下一步是了解 来获取访问令牌,并使用该令牌访问安全 API。
使用访问令牌来访问受保护的 资源
现在, weatherapi 通过 OAuth 2.0 受到保护,应用必须提供访问令牌才能使用 该 API。为了访问受保护的资源,应用会在请求中提供一个访问令牌作为 “授权”HTTP 标头,如下所示:
$ curl -H "Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282
由于该 API 附加了 OAuthV2 政策,因此 Apigee Edge 将验证访问令牌 提供的是有效的,然后授予对该 API 的访问权限,将天气报告返回给应用 发出请求。
但应用如何获取访问令牌呢?我们将在下一部分对此进行介绍。
如何将客户端凭据 访问令牌
应用程序通过将使用方密钥/密钥对提供给令牌来获取访问令牌 端点。令牌端点在名为 oauth。因此,应用需要调用 oauth API 公开的 API 来获取访问令牌。在获得访问令牌后,应用便可以调用 weatherapi 直至访问令牌过期或访问令牌被撤消。
现在,您需要换个角度,将自己视为一名应用开发者。您需要调用 weatherapi,因此您需要获取应用的访问令牌。首先,你需要做 获取使用方密钥和密钥令牌对(也称为API key 或 app key)。
您可以通过在 Apigee 上注册您的组织中的应用,获取使用方键值和密钥 Edge。
您可以在 Apigee Edge 管理界面中查看组织中的所有应用。
系统会显示贵组织中注册的应用列表。
(如果系统未显示任何应用,您可以参阅注册应用和管理 API 键。)
从列表中选择一个应用即可查看其详细配置文件。
在所选应用的详情视图中,记下 Consumer Key(使用方密钥)字段 和使用方密钥。这两个值就是 凭据,您将用它来获取 OAuth 访问令牌。
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps \ -u myname:mypass
此调用按应用 ID 返回应用列表。
[ "da496fae-2a04-4a5c-b2d0-709278a6f9db", "50e3e831-175b-4a05-8fb6-05a54701af6e" ]
您可以通过对应用 ID 进行简单 GET 调用来检索应用的配置文件:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \ -u myname:mypass
例如:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/da496fae-2a04-4a5c-b2d0-709278a6f9db \ -u myname:mypass
API 调用会返回您指定应用的配置文件。例如, weatherapp 具有以下 JSON 表示法:
{ "accessType" : "read", "apiProducts" : [ ], "appFamily" : "default", "appId" : "da496fae-2a04-4a5c-b2d0-709278a6f9db", "attributes" : [ ], "callbackUrl" : "http://weatherapp.com", "createdAt" : 1380290158713, "createdBy" : "noreply_admin@apigee.com", "credentials" : [ { "apiProducts" : [ { "apiproduct" : "PremiumWeatherAPI", "status" : "approved" } ], "attributes" : [ ], "consumerKey" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K", "consumerSecret" : "hAr4Gn0gA9vAyvI4", "expiresAt" : -1, "issuedAt" : 1380290161417, "scopes" : [ ], "status" : "approved" } ], "developerId" : "5w95xGkpnjzJDBT4", "lastModifiedAt" : 1380290158713, "lastModifiedBy" : "noreply_admin@apigee.com", "name" : "weatherapp", "scopes" : [ ], "status" : "approved" }
记下 consumerKey
和 consumerSecret
的值。您将使用这些
凭据,通过在 Google Cloud 控制台中将
HTTP 请求,如下所示。授权类型以查询参数的形式呈现给请求。
(请务必更改变量“{org_name}”的值,以反映贵组织的名称
。)
创建获取访问令牌的请求
在以下请求中,将 consumerKey
的值替换为
client_id
。将关联的 consumerSecret
的值替换为
client_secret
。
$ curl https://{org_name}-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials -X POST -d 'client_id=bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K&client_secret=hAr4Gn0gA9vAyvI4'
API 服务验证使用方键值和密钥,然后生成包含 访问令牌:
{ "issued_at" : "1380892555397", "application_name" : "957aa73f-25c2-4ead-8021-adc01f0d2c6b", "scope" : "", "status" : "approved", "api_product_list" : "[oauth-test]", "expires_in" : "3599", "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "client_id" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K", "access_token" : "ylSkZIjbdWybfs4fUQe9BqP0LH5Z", "organization_name" : "rqa", "refresh_token_expires_in" : "0", "refresh_count" : "0" }
请注意上述响应中的 access_token
值。这是用来
应用将用于获取对受保护资源的运行时访问权限。此应用的访问令牌为
ylSkZIjbdWybfs4fUQe9BqP0LH5Z
。
您现在已拥有有效的访问令牌 ylSkZIjbdWybfs4fUQe9BqP0LH5Z
,
访问受保护的 API。
使用默认 OAuth 配置
Apigee Edge 上为每个组织(即使是免费试用组织)都预配了一个 OAuth 令牌 端点。该端点已使用 API 代理中的政策进行了预配置,名为 oauth。创建账号后,即可开始使用令牌端点 (位于 Apigee Edge)。
默认 OAuth 端点会公开以下端点 URI:
/oauth/client_credential/accesstoken
将此 URI 发布至需要获取访问令牌的开发者。应用开发者将其应用配置为调用此端点,并提供其使用方密钥和密文对,以获取访问令牌。
默认客户端凭据令牌端点通过网络在以下网址上公开:
https://{org_name}-{env_name}.apigee.net/oauth/client_credential/accesstoken
例如,如果您的单位名称为“apimakers”,则网址为:
https://apimakers-test.apigee.net/oauth/client_credential/accesstoken
这是开发者为获取访问令牌而调用的网址。
三方模式 OAuth 配置
三足式 OAuth 配置(授权代码、隐式和密码授权) 类型)要求 API 提供方对应用最终用户进行身份验证。自从每 组织以不同方式对用户进行身份验证,需要一些政策自定义或代码 将 OAuth 与您的用户存储区集成。例如,所有用户可能都存储在“活跃”中 目录、LDAP 或一些其他用户存储区中。要启动并运行三足式 OAuth 需要将针对此用户存储区的检查集成到整个 OAuth 流程中。
<ph type="x-smartling-placeholder">OAuth 1.0a
要详细了解 OAuth 1.0a 政策,请参阅 OAuth v1.0a 政策。
获取帮助
如需帮助,请参阅 Apigee 客户服务。