教程:转换和保护 API
适用于:所有 API 管理层级
本教程介绍如何配置常用策略来转换 API。 你可能想要转换 API,以避免它透露私密的后端信息。 转换 API 有助于隐藏后端中运行的技术堆栈信息,或隐藏 API HTTP 响应正文中显示的原始 URL。
本教程还介绍如何通过配置速率限制策略为后端 API 添加保护,使开发人员不会过度使用 API。 有关更多策略选项,请参阅 API 管理策略。
注意
API 管理默认配置全局 forward-request
策略。 网关需有 forward-request
策略才能完成对后端服务发出的请求。
在本教程中,你将了解如何执行以下操作:
- 转换 API 以剥离响应标头
- 将 API 响应正文中的原始 URL 替换为 API 管理网关 URL
- 通过添加速率限制策略(限制)来保护 API
- 测试转换
先决条件
- 了解 Azure API 管理术语。
- 了解 Azure API 管理中策略的概念。
- 请完成以下快速入门:创建一个 Azure API 管理实例。
- 此外,请完成以下教程:导入并发布第一个 API。
转到你的 API 管理实例
在 Azure 门户中搜索并选择“API 管理服务” 。
在“API 管理”服务页上,选择你的 API 管理实例。
转换 API 以剥离响应标头
本部分介绍如何隐藏不想向用户显示的 HTTP 标头。 例如,在 HTTP 响应中删除以下标头:
- X-Powered-By
- X-AspNet-Version
测试原始响应
若要查看原始响应,请执行以下操作:
- 在 API 管理服务实例中,选择“API”。
- 在 API 列表中选择“演示会议 API”。
- 选择屏幕顶部的“测试”选项卡。
- 选择“GetSpeakers”操作,然后选择“发送”。
原始 API 响应应类似于以下响应:
可以看到,响应包括“X-AspNet-Version”和“X-Powered-By”标头 。
设置转换策略
此示例演示如何使用基于窗体的策略编辑器,该编辑器可帮助你配置许多策略,而无需直接编辑策略 XML 语句。
选择“演示会议 API”>“设计”>“所有操作” 。
在“出站处理”部分,选择“+ 添加策略”。
在“添加出站策略”窗口中,选择“设置标头”。
若要配置“设置标头”策略,请执行以下操作:
- 在“名称”下,输入“X-Powered-By”。
- 将“值”保留为空。 如果下拉列表中出现值,请将其删除。
- 在“操作”下,选择“删除”。
- 选择“保存”。
重复上述两个步骤以添加“设置标头”策略,该策略将删除 X-AspNet-Version 标头:
配置后,“出站处理”部分会显示两个 set-header 策略元素。
将 API 响应正文中的原始 URL 替换为 API 管理网关 URL
本部分介绍如何将 API HTTP 响应正文中显示的原始 URL 替换为 API 管理网关 URL。 你可能想要对用户隐藏原始后端 URL。
测试原始响应
若要查看原始响应,请执行以下操作:
选择“演示会议 API”>“测试” 。
选择“GetSpeakers”操作,然后选择“发送”。
可以看到,响应包括原始后端 URL:
设置转换策略
在此示例中,你将使用策略代码编辑器直接向策略定义添加策略 XML 代码片段。
选择“演示会议 API”>“设计”>“所有操作” 。
在“出站处理”部分,选择代码编辑器 (</>) 图标。
将光标放在
<outbound>
元素中的空白行上。 然后在屏幕右上角选择“显示代码片段”。在右侧窗口中的“转换策略”下,选择“在内容中屏蔽 URL” 。
<redirect-content-urls />
元素将添加到光标处。选择“保存”。
通过添加速率限制策略(限制)来保护 API
本部分介绍如何通过配置速率限制为后端 API 添加保护,使开发人员不会过度使用 API。 在此示例中,对每个订阅 ID 的限制设置为每 15 秒调用 3 次。 15 秒后,开发人员可以重试调用 API。
选择“演示会议 API”>“设计”>“所有操作” 。
在“入站处理”部分中,选择代码编辑器 (</>) 图标。
将光标放在
<inbound>
元素中的空白行上。 然后在屏幕右上角选择“显示代码片段”。在右侧窗口中的“访问限制策略”下,选择“限制每个键的调用速率”。
<rate-limit-by-key />
元素将添加到光标处。将
<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>
本部分的余下内容介绍如何测试本文中设置的策略转换。
测试剥离响应标头
选择“演示会议 API”>“测试” 。
选择“GetSpeakers”操作,并选择“发送” 。
如你所见,移除了 X-AspNet-Version 和 X-Powered-By 标头:
测试替换 URL
选择“演示会议 API”>“测试” 。
选择“GetSpeakers”操作,并选择“发送” 。
可以看到,URL 已被替换。
测试速率限制(限制)
选择“演示会议 API”>“测试” 。
选择“GetSpeakers”操作。 连续选择“发送”三次。
发送请求 3 次之后,会收到“429 请求过多”响应。
等待 15 秒或更长,然后再次选择“发送”。 此时应会收到“200 正常”响应。
总结
在本教程中,你了解了如何执行以下操作:
- 转换 API 以剥离响应标头
- 将 API 响应正文中的原始 URL 替换为 API 管理网关 URL
- 通过添加速率限制策略(限制)来保护 API
- 测试转换
后续步骤
转到下一教程: