教程:转换和保护 API

适用于:所有 API 管理层级

本教程介绍如何配置常用策略来转换 API。 你可能想要转换 API,以避免它透露私密的后端信息。 转换 API 有助于隐藏后端中运行的技术堆栈信息,或隐藏 API HTTP 响应正文中显示的原始 URL。

本教程还介绍如何通过配置速率限制策略为后端 API 添加保护,使开发人员不会过度使用 API。 有关更多策略选项,请参阅 API 管理策略

注意

API 管理默认配置全局 forward-request 策略。 网关需有 forward-request 策略才能完成对后端服务发出的请求。

在本教程中,你将了解如何执行以下操作:

  • 转换 API 以剥离响应标头
  • 将 API 响应正文中的原始 URL 替换为 API 管理网关 URL
  • 通过添加速率限制策略(限制)来保护 API
  • 测试转换

门户中 API 管理策略的屏幕截图。

先决条件

转到你的 API 管理实例

  1. 在 Azure 门户中搜索并选择“API 管理服务” 。

    选择“API 管理服务”

  2. 在“API 管理”服务页上,选择你的 API 管理实例。

    选择你的 API 管理实例

转换 API 以剥离响应标头

本部分介绍如何隐藏不想向用户显示的 HTTP 标头。 例如,在 HTTP 响应中删除以下标头:

  • X-Powered-By
  • X-AspNet-Version

测试原始响应

若要查看原始响应,请执行以下操作:

  1. 在 API 管理服务实例中,选择“API”。
  2. 在 API 列表中选择“演示会议 API”。
  3. 选择屏幕顶部的“测试”选项卡。
  4. 选择“GetSpeakers”操作,然后选择“发送”。

原始 API 响应应类似于以下响应:

门户中原始 API 响应的屏幕截图。

可以看到,响应包括“X-AspNet-Version”和“X-Powered-By”标头 。

设置转换策略

此示例演示如何使用基于窗体的策略编辑器,该编辑器可帮助你配置许多策略,而无需直接编辑策略 XML 语句。

  1. 选择“演示会议 API”>“设计”>“所有操作” 。

  2. 在“出站处理”部分,选择“+ 添加策略”。

    在门户中导航到出站策略的屏幕截图。

  3. 在“添加出站策略”窗口中,选择“设置标头”。

    在门户中配置“设置标头”策略的屏幕截图。

  4. 若要配置“设置标头”策略,请执行以下操作:

    1. 在“名称”下,输入“X-Powered-By”。
    2. 将“”保留为空。 如果下拉列表中出现值,请将其删除。
    3. 在“操作”下,选择“删除”。
    4. 选择“保存”。
  5. 重复上述两个步骤以添加“设置标头”策略,该策略将删除 X-AspNet-Version 标头:

  6. 配置后,“出站处理”部分会显示两个 set-header 策略元素。

    门户中“设置标头出站策略”的屏幕截图。

将 API 响应正文中的原始 URL 替换为 API 管理网关 URL

本部分介绍如何将 API HTTP 响应正文中显示的原始 URL 替换为 API 管理网关 URL。 你可能想要对用户隐藏原始后端 URL。

测试原始响应

若要查看原始响应,请执行以下操作:

  1. 选择“演示会议 API”>“测试” 。

  2. 选择“GetSpeakers”操作,然后选择“发送”。

    可以看到,响应包括原始后端 URL:

    门户中响应的原始 URL 的屏幕截图。

设置转换策略

在此示例中,你将使用策略代码编辑器直接向策略定义添加策略 XML 代码片段。

  1. 选择“演示会议 API”>“设计”>“所有操作” 。

  2. 在“出站处理”部分,选择代码编辑器 (</>) 图标。

    在门户中导航到出站策略代码编辑器的屏幕截图。

  3. 将光标放在 <outbound> 元素中的空白行上。 然后在屏幕右上角选择“显示代码片段”。

    在门户中的出站策略编辑器中选择显示代码片段的屏幕截图。

  4. 在右侧窗口中的“转换策略”下,选择“在内容中屏蔽 URL” 。

    <redirect-content-urls /> 元素将添加到光标处。

    在门户中插入掩码 URL 的屏幕截图。

  5. 选择“保存”。

通过添加速率限制策略(限制)来保护 API

本部分介绍如何通过配置速率限制为后端 API 添加保护,使开发人员不会过度使用 API。 在此示例中,对每个订阅 ID 的限制设置为每 15 秒调用 3 次。 15 秒后,开发人员可以重试调用 API。

  1. 选择“演示会议 API”>“设计”>“所有操作” 。

  2. 在“入站处理”部分中,选择代码编辑器 (</>) 图标。

    在门户中导航到入站策略代码编辑器的屏幕截图。

  3. 将光标放在 <inbound> 元素中的空白行上。 然后在屏幕右上角选择“显示代码片段”。

    在门户中的入站策略编辑器中选择显示代码片段的屏幕截图。

  4. 在右侧窗口中的“访问限制策略”下,选择“限制每个键的调用速率”。

    <rate-limit-by-key /> 元素将添加到光标处。

    在门户中插入每个密钥策略的限制调用速率的屏幕截图。

  5. <inbound> 元素中的 <rate-limit-by-key /> 代码修改为以下代码。 再选择“保存”。

    <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
    

测试转换

此时如果查看代码编辑器中的代码,则会发现策略代码应如下所示:

<policies>
   <inbound>
     <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
     <base />
   </inbound>
   <backend>
     <base />
   </backend>
   <outbound>
     <set-header name="X-Powered-By" exists-action="delete" />
     <set-header name="X-AspNet-Version" exists-action="delete" />
     <redirect-content-urls />
     <base />
   </outbound>
   <on-error>
     <base />
   </on-error>
</policies>

本部分的余下内容介绍如何测试本文中设置的策略转换。

测试剥离响应标头

  1. 选择“演示会议 API”>“测试” 。

  2. 选择“GetSpeakers”操作,并选择“发送” 。

    如你所见,移除了 X-AspNet-VersionX-Powered-By 标头:

    显示门户中已剥离的响应标头的屏幕截图。

测试替换 URL

  1. 选择“演示会议 API”>“测试” 。

  2. 选择“GetSpeakers”操作,并选择“发送” 。

    可以看到,URL 已被替换。

    显示门户中已替换 URL 的屏幕截图。

测试速率限制(限制)

  1. 选择“演示会议 API”>“测试” 。

  2. 选择“GetSpeakers”操作。 在一行中选择“发送”四次。

    发送四次请求后,将会收到“429 请求太多”响应

    显示门户中响应中“请求过多”的屏幕截图。

  3. 等待 15 秒或更长,然后再次选择“发送”。 此时应会收到“200 正常”响应。

总结

在本教程中,你了解了如何执行以下操作:

  • 转换 API 以剥离响应标头
  • 将 API 响应正文中的原始 URL 替换为 API 管理网关 URL
  • 通过添加速率限制策略(限制)来保护 API
  • 测试转换

后续步骤

转到下一教程: