首页 > 解决方案 > 使用 Azure Blob 存储对付费媒体文件进行安全媒体共享

问题描述

我正在为要共享付费媒体文件的网站开发 C# Web API,我将媒体文件存储到 Azure blob 存储。目前,当有人为某些书籍、视频、音频和他/她想要访问该媒体付费时,我为每次访问制作 SAS 令牌,但我不确定这是最好的方式。有人可以帮助我并为此提出一些更好的方法吗?该解决方案需要使用 Azure 服务。

如果我不够清楚。例子:

  1. 在我的网站上有一些价格为 5 美元的视频。
  2. 用户购买该视频。
  3. 当她/他点击播放视频时,我制作 SAS 令牌以进行一次性访问(5 秒后过期)并返回该视频和媒体播放器追溯视频的 URL。如果用户刷新网页,我会再次创建新的 SAS 令牌并返回新的 URL 等...

标签: c#azureazure-blob-storage.net-framework-4.8

解决方案


这是一个设计问题,请注意,在不了解端到端业务需求的情况下,无法一次性回答。

但是,我会在这里提出一个建议。您可以为此使用用户委派 SAS

使用 Azure AD 凭据保护的 SAS 称为用户委托 SAS。Microsoft 建议您尽可能使用 Azure AD 凭据作为安全最佳实践,而不是使用帐户密钥,因为后者更容易受到破坏。当您的应用程序设计需要共享访问签名时,请使用 Azure AD 凭据创建用户委派 SAS 以获得更高的安全性。

以下是要遵循的步骤的时间表:

  1. 如果用户进行交易并支付视频费用,则根据他的凭据分配用户委派 SAS 。将此作为机密保存在您的数据库中,针对您的用户记录(同样,应根据与架构师的讨论来完成此设计)。
  2. 如果购买的时间段已过期且未完成续订,则创建一个撤销用户授权密钥的后端作业。

推荐阅读