请问下除了使用阿里云 CDN 提供的几个鉴权算法外,能够使用自定义鉴权算法而不是用阿里云的鉴权算法吗?
因为我们的每个 URL 都有自己的鉴权算法,需要在 CDN 处先校验下权限是否符合我们的业务权限规则,例如下面的场景 (抱歉,因为发帖数不够,不让显示 http 完整地址,所以去掉了域名):
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
可以使用自定义鉴权算法。根据阿里云CDN服务的灵活性,您能够实现自定义鉴权逻辑来满足特定业务权限规则的需求。这可以通过EdgeScript功能来实现,允许您编写脚本来自定义鉴权流程,包括但不限于参数验证、时间戳检查及自定义算法执行等。
例如,在您的场景中,用户访问URL携带了自定义鉴权参数(如our-auth
),您可以通过以下方式实施自定义鉴权:
配置EdgeScript:在阿里云CDN控制台,您可以为特定的目录或文件类型配置EdgeScript规则。编写脚本来解析并验证our-auth
参数,确保其符合您内部的鉴权逻辑。
# 自定义鉴权示例
if eq(substr($uri, -7), ".mp4?") {
our_auth = $arg_our-auth
# 这里添加您的自定义鉴权算法逻辑
# 验证our_auth是否合法,比如查询内部数据库、验证签名等
if not(our_auth_valid(our_auth)) {
add_rsp_header('X-AUTH-MSG', 'Custom auth failed')
exit(403)
}
}
自定义鉴权函数:在上述脚本中提到的our_auth_valid()
是一个假设的自定义函数,您需要根据实际业务逻辑来实现它,以判断传入的鉴权值是否有效。
错误处理与响应:当鉴权失败时,通过add_rsp_header
添加自定义响应头来说明失败原因,并使用exit(403)
返回HTTP 403错误给客户端,拒绝访问。
通过这种方式,阿里云CDN不仅支持内置的鉴权方式(如鉴权方式A和C),还允许您集成自有的鉴权机制,确保每个请求在CDN边缘节点处先经过业务权限校验,从而保护您的资源免受未授权访问。