Azure 存储:有没有办法从 SAS Url 检索权限信息?

Posted

技术标签:

【中文标题】Azure 存储:有没有办法从 SAS Url 检索权限信息?【英文标题】:Azure Storage: Is there way to retrieve permission info from an SAS Url? 【发布时间】:2014-10-14 01:26:14 【问题描述】:

在我的函数中,我得到一个 SAS 令牌作为输入。我需要决定是否从令牌授予删除权限。

我尝试这样解析:

var permission = containerSasUrl.Split('&').Where(param => param.StartsWith("sp=")).ToArray(); 
if (!permission[0].Contains('d'))

    throw new StorageException(string.Format("Unable to delete files from 0, check the storage permissions.", containerSasUrl));

但失败的 URL 具有嵌入在访问策略中的权限信息。喜欢:

https://xxx.blob.core.windows.net/test?sr=c&sv=2014-02-14&si=DownloadToolPolicy&sig=NMczy2Dn9uktwIaP2qIxqLSnZteyOd%2FAffgawDLfV7g%3D

我还能走其他路线吗?

【问题讨论】:

【参考方案1】:

不幸的是,不,至少用于检查 SAS 中是否包含delete 权限。起初我以为我可以尝试删除一个不存在的 blob 并捕获异常,如果 SAS 令牌没有此权限,我会收到 403 错误但是在两种情况下我都会收到 404 错误,即当blob 存在和不存在且 SAS 令牌没有删除权限。

【讨论】:

正确,我之前试过这条路线。两者都得到 404。:(【参考方案2】:

必须进行试点下载和删除才能解决此问题。 欢迎使用更优雅的解决方案。

【讨论】:

以上是关于Azure 存储:有没有办法从 SAS Url 检索权限信息?的主要内容,如果未能解决你的问题,请参考以下文章

Azure CDN URL使用令牌身份验证和Blob存储SAS重写规则

将数据从 Azure Blob 存储导入 AzureSQL PaaS 的方法

使用 SAS 将文件从 Azure Blob 存储下载到浏览器

将文件从浏览器上传到 Azure Blob 存储,无需 SAS 密钥

Azure 存储帐户生成 SAS 令牌,而不是 SAS URI

从 Azure Blob 存储文件名下载文件时出现的问题包含哈希 (#)