如何管理并保护Azure Media Services的Streaming Locator,防止其他网站盗用?
Azure Media Service 限制视频仅允许自有网站播放方案
核心解决方案
要防止其他网站盗用你的Streaming Locator,主要通过域名访问限制和动态生成临时Locator实现,DRM作为补充防护手段,以下是具体方案:
一、域名访问限制(快速生效的基础防护)
- 配置Streaming Endpoint的CORS规则:在Azure Media Service的Streaming Endpoint设置中,添加允许的域名列表(仅包含你的网站域名,如
https://your-angular-site.com),拒绝所有其他域名的跨域请求。这样其他网站的播放器无法跨域拉取你的流媒体内容。 - 配合CDN的Referer限制:如果你的流媒体通过Azure CDN加速,在CDN的规则引擎中添加Referer过滤,仅允许来自你网站的Referer请求。这能拦截直接复制Locator链接到其他网站播放的行为。
二、动态生成临时Streaming Locator(更安全的长效方案)
你考虑的按需创建Locator是非常合理的安全手段,具体执行方式:
- 不在Azure Portal创建永久有效的Locator,而是在用户点击视频时,通过后端服务调用Azure Media Service API生成带有效期的Locator(比如设置1-2小时有效期)。
- 前端Angular应用从你的后端获取临时播放链接,用户播放结束后无需手动删除Locator,到期后Azure会自动使其失效。
- 关键优势:即使链接被泄露,有效期极短,盗用者无法长期利用;所有Azure API调用都在后端完成,前端无需接触Client Secret,彻底避免密钥泄露风险。
三、DRM的作用(补充防护,非必需)
DRM并非解决域名限制的核心方案,它主要用于防止视频内容被下载破解。如果你的视频属于高价值内容,可配合DRM增强保护:
- 配置DRM时,可以设置许可证绑定域名或设备,但配置复杂度较高,适合对内容安全要求极高的场景。
- 对于普通防盗用需求,域名限制+动态临时Locator已经足够,无需额外启用DRM。
关于API认证的疑问
你担心Angular前端暴露Client Secret的问题完全正确——绝对不能在前端代码中嵌入Client Secret。正确的做法是:
- 所有与Azure Media Service交互的逻辑(创建Locator、获取播放链接)都放在你的后端服务中,由后端持有Client Secret并完成Azure API的认证调用。
- 前端仅向后端请求播放链接,无需处理任何Azure认证相关的信息。
- 如果不想强制用户登录,可给后端的播放链接接口添加简单校验(比如验证请求的Referer是否来自你的网站),结合前面的CORS和CDN限制,就能有效阻止非授权访问。
内容的提问来源于stack exchange,提问作者Vrosen
相关产品推荐
相关产品推荐

