【问题标题】:Getting a blob content using user delegation SAS created using user delegation key使用用户委托 SAS 创建使用用户委托密钥获取 blob 内容
【发布时间】:2020-01-15 16:10:23
【问题描述】:

我已经按照https://docs.microsoft.com/en-us/azure/storage/common/storage-auth-aad-app 创建了一个 AAD 应用程序。

为创建的 AAD 应用授予对 Azure 存储帐户的访问权限。

获取了客户端 ID 和客户端密码。

为了创建用户委托密钥和用户委托 sas,我使用了定义的方法和代码 https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-user-delegation-sas-create-dotnet.

(如文章中所述设置环境变量)。

我可以使用 GetUserDelegationSasBlob 方法生成用户委托密钥。

容器和 blob 文件是现有的。

现在我使用方法 ReadBlobWithSasAsync 使用上面生成的 SAS uri 读取 blob 的内容。

但是,我得到如下错误。

此请求无权使用此执行此操作 允许。 RequestId:5d127eaf-101e-00be-6666-6a3875000000

时间:2019-09-13T19:04:15.4109144Z

状态:403(此请求无权执行此操作 使用此权限。)

错误代码:AuthorizationPermissionMismatch

在另一种方法中,我使用 rest api 生成用户委托密钥。 https://docs.microsoft.com/en-us/rest/api/storageservices/get-user-delegation-key

我能够获取 xml 格式的用户授权密钥。 我正在按照中的步骤从中创建 SAS https://docs.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas

对于签名,我正在使用此代码,使用 StringToSign 和从委托密钥接收到的秘密值。

var encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(secret);
byte[] messageBytes = encoding.GetBytes(ToSign);
using (var hmacsha256 = new HMACSHA256(keyByte))
{
    byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
    String sig= Convert.ToBase64String(hashmessage);
}

我正在执行 GET 请求。 我尝试了各种参数值,例如,

sr: b 和 c sks:b和c sp: racwd 和 r 和 rw 等等

skv 和 sv 是 2018-11-09,因为创建用户委托密钥需要此版本。

但是 GET api 返回错误。

AuthenticationFailed 服务器未能验证请求。确保 Authorization 标头的值正确形成,包括 签名。请求ID:e4bc8f0f-d01e-0046-7367-6af368000000 时间:2019-09-13T19:12:27.7780695Z 签名字段格式不正确。

【问题讨论】:

  • 尝试将 Storage Blob Data Contributor 角色分配给存储帐户。参考这个article
  • 嗨乔伊。看不到您的评论旁边的复选标记。
  • 嗨,Manish,只需单击答案旁边的复选标记即可将其从灰色切换为已填充,例如 one
  • 嗨乔伊。感谢您帮助解决问题。接受答案。

标签: azure azure-storage azure-blob-storage


【解决方案1】:

尝试将Storage Blob Data Contributor 角色分配给存储帐户。

Reader 角色是一个 Azure 资源管理器角色,它允许用户查看存储帐户资源,但不能修改它们。 它不提供对 Azure 存储中数据的读取权限,而只提供对帐户管理资源的读取权限。

请参阅此article

【讨论】:

    猜你喜欢
    • 2021-08-15
    • 2020-06-07
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多