本文档介绍如何在火山引擎内容分发网络(CDN)中配置 URL 鉴权。
CDN 提供了 "Referer 黑白名单","Origin 黑白名单" 和 "IP 黑白名单" 对用户请求进行过滤。但是在某些情况下,Referer, Origin 和 IP 可以被伪造,容易造成站点资源被恶意盗用。如果您对于站点内容的安全性有很高的要求,可以采用 URL 鉴权。
客户端在发送请求至服务端时,按照您设定的签名规则计算签名,并在请求中包含这个签名。服务端收到请求后,需要校验签名。只有在校验通过的情况下,才会响应客户端请求。
本文档通过 示例代码 演示了客户端签名逻辑的实现。同时也描述了如何在 CDN 中配置请求的鉴权逻辑。
URL 鉴权能够有效防止源站内容被恶意用户盗刷。
说明
控制台提供了鉴权计算器,一个便利的小工具。在完成 URL 鉴权的配置后,您可以使用鉴权计算器来:
生成鉴权 URL 示例。该 URL 示例除了包含签名,也符合您指定的鉴权类型所定义的 URL 格式。通过发送一个包含该 URL 示例的请求,您可以验证您的 URL 鉴权配置是否符合预期。
验证客户端生成的鉴权 URL 示例是否与鉴权计算器生成的相同。
验证签名的过期时间是否符合预期。
上点击 鉴权计算器。 鉴权计算器 页面会自动获取加速域名的 URL 鉴权配置。如果您没有配置备密钥,鉴权计算器会自动创建一个供参考,您也可以删除该备密钥。如果您删除了备密钥,在生成的鉴权 URL 中,就不会包含备用鉴权 URL。
在 原始 URL 处,输入您站点上任意一个文件的 URL。在您未启用 URL 鉴权时,用户使用该 URL 访问该文件。
(可选)指定一个 开始时间。默认情况下,开始时间 就是当前时间,用于计算签名的过期时间。
点击 生成鉴权,然后查看生成的鉴权 URL 示例以及签名的过期时间。
如果源站使用了 URL 鉴权,您需要按照以下步骤对加速域名配置相同的 URL 鉴权逻辑。同时,您必须关闭源站上的 URL 鉴权,因为回源请求是不包含签名的。
CDN 提供的一系列访问控制功能有不同的优先级。在 CDN 处理用户请求时,这些功能按优先级对请求生效。参见 访问控制功能的优先级。
客户端请求中包含的签名可以由一个独立的签名服务器提供,也可以由客户端生成。您可以参考以下示例代码中展示的签名算法,在客户端或者签名服务器使用相应的编程语言实现签名计算逻辑。
说明
Python 示例代码要求 Python 3.0。