首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用API到Azure文件存储时,签名身份验证失败

调用API到Azure文件存储时,签名身份验证失败
EN

Stack Overflow用户
提问于 2022-06-30 05:08:14
回答 1查看 251关注 0票数 0

在从调用文件时,我试图在API头中创建一个有效的签名。作为回报,有一个错误:

代码语言:javascript
运行
复制
/*I have rewritten all accounts and keys to fake*/
    <Error>
    <Code>AuthenticationFailed</Code>
    <Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:aea05260-xxxx-xxxx-xxxx-xxxx58000000
Time:2022-06-30T03:26:24.1626176Z</Message>
    <AuthenticationErrorDetail>The MAC signature found in the HTTP request 'ZmEyNjY0YmUwNWNjYmI2MmE1NTI2MDBjOGUyNTE2OTY0NmUzMjQ3NTU3Y2EwN2JhMmY3NmI5NmRiNDkxMzU2NA==
' is not the same as any computed signature. Server used following string to sign: 'GET


0








x-ms-date:Thu, 30 Jun 2022 03:24:00 GMT
x-ms-version:2014-02-14
/testgetfilestorage/integration/testfolder/abc123.xml'.</AuthenticationErrorDetail>
</Error>

我有Azure文件存储帐户& key,它可以在Microsoft Azure存储资源管理器上正常读取/下载文件,但我不确定创建签名时有什么问题,下面是如何在邮递员上测试REST API:

代码语言:javascript
运行
复制
/*I have rewritten all accounts and keys to fake*/
On Postman:

URL: 

GET https://testgetfilestorage.file.core.windows.net/integration/testfolder/abc123.xml

Header: 

x-ms-version:2014-02-14

x-ms-date:Thu, 30 Jun 2022 03:24:00 GMT

Authorization:SharedKey testgetfilestorage:ZmEyNjY0YmUwNWNjYmI2MmE1NTI2MDBjOGUyNTE2OTY0NmUzMjQ3NTU3Y2EwN2JhMmY3NmI5NmRiNDkxMzU2NA==

根据Microsoft 授权共享密钥,我按照以下步骤创建签名:

代码语言:javascript
运行
复制
/*I have rewritten all accounts and keys to fake*/
Signature=Base64(HMAC-SHA256(UTF8(StringToSign), Base64.decode(<your_azure_storage_account_shared_key>)))

/*My parameters as follow*/
StringToSign = 'GET\n\n\n0\n\n\n\n\n\n\n\n\nx-ms-date:Thu, 30 Jun 2022 03:24:00 GMT\nx-ms-version:2014-02-14\n/testgetfilestorage/integration/testfolder/abc123.xml'
your_azure_storage_account_shared_key = 'TRE/abcabcabcabc90+YCabcabcabcabcabcabcabcabcabcabcabcabcabcR2NC7i5WREgBAjNivlhwGhwmZQ=='

The steps I create the signature:
1. Signature=Base64(HMAC-SHA256(UTF8(GET\n\n\n0\n\n\n\n\n\n\n\n\nx-ms-date:Thu, 30 Jun 2022 03:24:00 GMT\nx-ms-version:2014-02-14\n/testgetfilestorage/integration/testfolder/abc123.xml), Base64.decode(TRE/abcabcabcabc90+YCabcabcabcabcabcabcabcabcabcabcabcabcabcR2NC7i5WREgBAjNivlhwGhwmZQ==)))
2. Signature=Base64(HMAC-SHA256(GET\n\n\n0\n\n\n\n\n\n\n\n\nx-ms-date:Thu, 30 Jun 2022 03:24:00 GMT\nx-ms-version:2014-02-14\n/testgetfilestorage/integration/testfolder/abc123.xml, M?i·mÆ›q¦Ü÷O˜  ¦Üi·mÆ›q¦Üi·mÆ›q¦Üi·mÆ›q¦ÜGcBî.VDH3b¾Xp&e))
3. Signature=Base64(fa2664be05ccbb62a552600c8e25169646e3247557ca07ba2f76b96db4913564)
4. Signature=ZmEyNjY0YmUwNWNjYmI2MmE1NTI2MDBjOGUyNTE2OTY0NmUzMjQ3NTU3Y2EwN2JhMmY3NmI5NmRiNDkxMzU2NA==

请告诉我在签名创作上做错了什么。

EN

回答 1

Stack Overflow用户

发布于 2022-07-06 15:18:07

服务器无法验证请求。确保授权头的值是正确的,包括签名。

有几个原因导致这个错误,下面是其中一些原因,

  • 给定的SAS令牌不是有效的,否则它可能过期。
  • 如果这些字符( ! $ & ' ( ) * , : ; = @)是blob路径名称的一部分,请确保在路径上的URL encoding重新检查一次。
  • 重新检查您的计算机的时钟时间与格林尼治时间比较。
  • 如果差异时间超过15分钟,这可能是原因之一。
  • Account key区分大小写,请确保重新检查上/下大小写。

多亏了@Gaurav Mantri@Adam Sorrin - MSFT,您可以在这里遵循下面的引用。

参考文献1参考文献2.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72810548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档