【发布时间】:2021-04-08 10:12:21
【问题描述】:
我根据需要在服务器上创建 SAS 令牌并将它们发送给用户,以便他们可以上传 Blob。默认情况下,每个令牌都设置为在 一小时 后过期。我还使用Azure Functions 进行服务器端处理。
var cloudStorageAccount = // create a new CloudStorageAccount
var sharedAccessAccountPolicy = new SharedAccessAccountPolicy
{
Permissions = SharedAccessAccountPermissions.Read | SharedAccessAccountPermissions.Write,
Services = SharedAccessAccountServices.Blob,
ResourceTypes = SharedAccessAccountResourceTypes.Object,
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1),
Protocols = SharedAccessProtocol.HttpsOnly
};
var token = cloudStorageAccount.GetSharedAccessSignature(sharedAccessAccountPolicy);
我想要做的是通过EventGridTrigger 监听 blob 更改,一旦成功使用 SAS 令牌,它就会过期。例如,如果用户花了 10 分钟 上传文件,则该令牌应该不再可用。这是为了防止滥用,因为生成 SAS 令牌的 API 受到速率限制。如果我希望用户在一小时内只上传一个文件,我需要一种方法来强制执行此操作。如果令牌在一小时内过期,理论上具有快速互联网连接的人可以上传数十个文件。
所以,我的问题是,是否有可能以编程方式使令牌过期,即使尚未达到其到期日期?在我的场景中可行的另一种选择是在可能的情况下生成一次性令牌。
【问题讨论】:
-
如果用户正在上传文件到指定的容器,那么在这种情况下,您可以使用存储访问策略来动态控制过期时间。
标签: azure azure-functions azure-storage azure-blob-storage