【问题标题】:Shared key for Azure StorageAzure 存储的共享密钥
【发布时间】:2018-12-05 23:11:17
【问题描述】:

我有试用版 Azure 帐户,并在存储下创建了表。我想使用 REST API 读取表格。我正在通过文档 (https://docs.microsoft.com/en-us/rest/api/storageservices/authorization-for-the-azure-storage-services) 为 HTTP 请求准备授权标头。 我找不到“共享密钥”表单门户,有人可以帮忙吗?

【问题讨论】:

    标签: azure azure-storage


    【解决方案1】:

    按照以下步骤查看 Azure Blob 存储帐户的存储访问密钥:

    1. 登录到 Azure 仪表板。

    2. 在导航窗格中,单击所有资源。

    3. 选择所需的存储帐户。

    4. 单击密钥图标 () 以查看存储帐户的访问密钥 ()。

      注意:每个存储帐户都有两个存储访问密钥“因此您可以使用一个密钥维持连接,同时重新生成另一个密钥”。

    5. 要复制存储访问密钥,请单击要复制的密钥旁边的复制图标。


    访问密钥一词在 Azure 术语中是 共享密钥的同义词。

    来自Manage storage account access keys 文档文章:

    创建存储帐户时,Azure 会生成两个 512 位存储帐户访问密钥。这些密钥可用于授权通过共享密钥授权访问您的存储帐户中的数据。

    【讨论】:

    • “访问密钥”和“共享密钥”是一样的吗? OP 要求提供“共享密钥”。
    【解决方案2】:

    这是一个创建文件的工作示例:

    https://github.com/mstaples84/azurefileserviceauth.git

    根据教程:

    https://docs.microsoft.com/de-de/azure/storage/common/storage-rest-api-auth 但处理我在从教程创建文件时遇到的问题。

    只需运行单元测试“CreateFileAsync()”即可对其进行测试。确保编辑由 Test 类设置的常量以使其工作。

    【讨论】:

    • 感谢 Michael,在尝试从 Azure 文件存储中获取文件时,我收到 403 错误“服务器无法对请求进行身份验证。确保授权标头的值正确形成,包括签名。” . AzureStorageAuthenticationHelper 的这个实现解决了这个问题。
    【解决方案3】:

    Shared Key authorization 用于版本 2009-09-19 及更高版本的表服务,使用与以前版本的表服务相同的签名字符串。

    授权头的格式如下:

    Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>"
    

    针对表服务的请求的共享密钥签名字符串不包括字符串的CanonicalizedHeaders 部分。此外,在这种情况下,Date 标头永远不会为空,即使请求设置了 x-ms-date 标头r。如果请求设置了x-ms-date,则该值也用于Date 标头的值。

    要对使用 REST API 发出的针对表服务的请求的签名字符串进行编码,请使用以下格式:

    StringToSign = VERB + "\n" +   
                   Content-MD5 + "\n" +   
                   Content-Type + "\n" +  
                   Date + "\n" +  
                   CanonicalizedResource;  
    

    此格式支持所有版本的表服务的 Shared Key 和 Shared Key Lite。以这种格式构造CanonicalizedResource字符串,如下所示:

    1.以空字符串 ("") 开头,附加正斜杠 (/),后跟拥有正在访问的资源的帐户的名称。

    2.附加资源的编码 URI 路径。如果请求 URI 寻址资源的一个组件,则附加适当的查询字符串。查询字符串应包含问号和comp 参数(例如?comp=metadata)。

    对签名进行编码

    要对签名进行编码,使用以下格式:

    Signature=Base64(HMAC-SHA256(UTF8(StringToSign), Base64.decode(<your_azure_storage_account_shared_key>))) 
    

    【讨论】:

      猜你喜欢
      • 2015-04-26
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多