第 2 部分:生成并测试 API 密钥

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

已重构,并重定向到通过要求 API 密钥保护 API

“开发者”构建可向您的 API 发出请求以访问您的后端服务的应用如需控制对 API 的访问权限,您可以要求开发者在每次请求时都传递 API 密钥。如果密钥缺失或无效,请求将失败。

“发布”是将您的 API 提供给应用开发者使用的过程。您可以通过以下任务广泛定义发布 API:

  1. 在 Apigee Edge 上创建捆绑您的 API 的 API 产品。
  2. 在 Edge 上注册应用开发者。只有已注册的应用开发者才能注册应用。
  3. 开发者在 Edge 上注册应用以访问 API 产品。作为响应,开发者会收到 API 密钥。在开发者拥有 API 密钥后,他们就可以向您的 API 发出请求了。

如需了解详情,请参阅发布简介

下表定义了用于注册应用和生成密钥的一些术语:

术语 定义
API 产品 一组 API 代理,结合一项服务方案,用于设置对这些 API 的访问限制。API 产品是 Apigee Edge 用于对 API 进行授权和访问权限控制的中心机制。
开发者 API 使用方。开发者可编写可向您的 API 发出请求的应用。
应用广告系列 开发者为访问 API 产品而注册的客户端应用。如果在 API 产品中注册应用,则系统会生成用于访问该产品中的 API 的 API 密钥。
API 密钥 包含客户端应用在访问 API 产品所公开资源时使用的授权信息的字符串。API 密钥是在已注册的应用与 API 产品关联时生成的。

学习本教程的前提条件

本教程假定您已完成第一个教程,在该教程中,您创建了一个用于访问 Yahoo weather API 的 API 代理。如果您尚未完成第一个教程,请参阅通过要求 API 密钥保护 API 来保护 API

第 1 步:创建 API 产品

  1. 在管理界面中,点击发布标签页,然后点击产品
  2. 点击 (+) 商品
  3. 在“添加产品”对话框字段中输入或选择以下内容:
    字段
    名称 免费 API 产品
    显示名称 免费 API 产品
    说明 免费 API 产品
    环境 测试
    有访问权限的应用 仅供内部使用
    密钥审批类型 自动
    (API 密钥生成后会自动获得批准)
    配额 每小时 10 个请求
    (将请求数量限制为每小时 10 个)
    允许的 OAuth 范围 留空

    填充的对话框应如下所示:

  4. 在“资源”部分,选择:
    • API 代理weatherapikey
    • 修订版本:1
    • 资源路径:/forecastrss**

      资源路径指定了产品允许应用访问的资源 URI。在此示例中,应用只能通过此 API 产品访问 weatherapikey 代理上的 /forecastrss 资源。禁止尝试使用此 API 产品访问 weatherapiproxy 代理或任何其他代理上的其他任何资源。

      资源路径允许使用通配符。通配符“/**”表示包含所有子 URI,表示 /forecastrss/foo/bar 形式的资源。通配符“/”表示仅包含下一级别的 URI。如需了解详情,请参阅创建 API 产品

      请注意,资源路径下拉列表显示了在指定 API 代理上定义的所有条件流程。API 代理的条件流程定义了与资源路径关联的逻辑或处理步骤。API 产品控制着对这些资源路径的访问权限。
  5. 点击 Import Resource。系统会添加资源路径,并自动将 weatherapikey API 代理添加到产品的 API 代理部分。
  6. 点击保存。您的新商品会在“商品”页面上列出。

了解详情

第 2 步:注册开发者

要生成 API 密钥,您需要注册应用并将其与 API 产品关联。不过,您必须先注册应用开发者,然后才能注册应用。

  1. 在管理界面中,点击发布标签页,然后点击开发者
  2. 点击 (+) 开发者
  3. 在“新建开发者”对话框中,输入以下值:
    • 名字Jane
    • 姓氏教程
    • 电子邮件地址janetutorial@example.com
    • 用户名jtutorial
  4. 点击保存。新开发者将出现在“开发者”页面的开发者列表中。

了解详情

第 3 步:注册应用

现在,您已经有了 API 产品和开发者,接下来就可以向 API 产品注册应用了。注册应用会为与应用关联的 API 产品生成 API 密钥。然后,您可以将密钥分发给应用开发者,以便他们通过应用访问 API 产品中的功能。

  1. 在 API 平台界面中,点击发布标签页,然后点击开发者应用
  2. 点击 (+) 开发者应用
  3. 在“添加应用”对话框中,输入以下值:
    • 显示名Weather API Key App
    • 开发者Jane 教程 (janetutorial@example.com)
    • Callback 网址(回调网址):留空
  4. 将应用与产品相关联:
    1. 商品部分中,点击 + 商品
    2. 选择免费 API 产品
    3. 点击对勾标记图标即可接受更改。
  5. 点击保存。新应用会显示在“开发者应用”页面上的应用列表中。
  6. 在应用列表中选择 Weather API Key App。系统会打开该应用的详情页面。
  7. 由于您在创建 API 产品时选择了密钥审批类型:自动,因此 API 密钥会自动获得批准,您可以立即查看它。(如果您已选择审批类型:手动,则需要点击免费 API 产品的“操作”列中的批准以批准 API 密钥)。
  8. 在“产品”部分中“免费 API 产品”条目旁边,点击“使用方密钥”和“使用方密钥”列中的显示,以显示生成的密钥。

    使用方密钥是 API 密钥的别称,也是应用通过您的 API 代理访问预测资源所需的唯一密钥。在通过 OAuth 2.0 保护 API 时,需要使用使用方密钥(以及使用方密钥)。例如,请参阅 OAuth 2.0:配置新的 API 代理

了解详情

第 4 步:在请求中使用 API 密钥

为了确保 VerifyAPIKey 政策正常运行,您需要使用有效的 API 密钥调用 API 代理以对其进行测试。您可以通过浏览器、API 代理的“跟踪”页面、Apigee 控制台或使用 c网址 来请求 API 代理。要请求的网址采用以下格式:

http://{org-name}-test.apigee.net/v1/weatherapikey/forecastrss?w=12797282&apikey=IEYRtW2cb7A5Gs54A1wKElECBL65GVls

将您的 Apigee 组织名称替换为 {org-name} 和正确的 apikey 值。

在响应中查找以下内容:

<rss xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0"> 
<channel> <title>Yahoo! Weather - Palo Alto, CA</title> 
<link>http://us.rd.yahoo.com/dailynews/rss/weather/Palo_Alto__CA/*http://weather.yahoo.com/forecast/USCA1093_f.html</link> 
<description>Yahoo! Weather for Palo Alto, CA</description> <language>en-us</language>

如果您从请求中省略 API 密钥,或指定的密钥值无效,则会收到以下形式的错误响应

{"fault":{"faultstring":"Failed to resolve API Key variable null","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}

第 5 步:下一步该做什么?

现在,您已经使用查询参数传递 API 密钥来向 API 发出请求,请修改 API 以将密钥作为标头传递。

继续阅读通过要求 API 密钥保护 API 来保护 API