如何解决Azure 表存储表服务 REST APISharedKeyLite 不起作用
var storageAccount = "mystorage";
var accountKey = "<<primaryKey>>";
var date = new Date();
var UTCstring = date.toUTCString();
var data = UTCstring + "\n" + "/mystorage/Health"
var encodedData = unescape(encodeURIComponent(data));
var hash = CryptoJS.HmacSHA256(encodedData,CryptoJS.enc.Base64.parse(accountKey));
var signature = hash.toString(CryptoJS.enc.Base64);
var auth = "SharedKeyLite " + storageAccount + ":" + signature;
postman.setEnvironmentvariable("auth",auth);
postman.setEnvironmentvariable("date",UTCstring);
有人可以指导我这里出了什么问题吗?!
解决方法
我认为您需要生成一个不记名令牌并将其交给邮递员授权。
如果您使用的是 C#,您可以使用它来获取不记名令牌:
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
string accesstoken = azureServiceTokenProvider.GetAccessTokenAsync("https://storage.azure.com/").Result;
string bearertoken = "Bearer " + accesstoken;
然后复制不记名令牌:
之后应该就可以了。
,刚刚意识到我们正在编码的 url 和 data
应该与我们正在查询的 url 完全匹配...
更改后
var data = UTCstring + "\n" + "/mystorage/Health"
到
var data = UTCstring + "\n" + "/mystorage/Health(PartitionKey='USA',RowKey='WA')"
一切开始运作。
更新: 它只需要正确的表查询。以下工作正常,
var data = UTCstring + "\n" + "/mystorage/Health()"
url 中的所有过滤器表达式都是从 postman 调用的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。