Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自iOS设备的Azure Blob存储:服务器无法验证请求_Ios_Iphone_Swift_Azure_Azure Storage Blobs - Fatal编程技术网

来自iOS设备的Azure Blob存储:服务器无法验证请求

来自iOS设备的Azure Blob存储:服务器无法验证请求,ios,iphone,swift,azure,azure-storage-blobs,Ios,Iphone,Swift,Azure,Azure Storage Blobs,Getting—“服务器无法验证请求。请确保授权标头的值的格式正确,包括签名。”为azure存储客户端进行身份验证时。 所有这些都可以在xcode模拟器中正常工作。上传、下载和创建新容器。但从我的iOS设备、iPhone 5s和iPad air,我无法进行身份验证 代码(swift) credential=AuthenticationCredential(azureServiceAccount:“myStorageAccount”,accessKey:“myKeyIsHere”) 客户端=Clo

Getting—“服务器无法验证请求。请确保授权标头的值的格式正确,包括签名。”为azure存储客户端进行身份验证时。 所有这些都可以在xcode模拟器中正常工作。上传、下载和创建新容器。但从我的iOS设备、iPhone 5s和iPad air,我无法进行身份验证

代码(swift)

credential=AuthenticationCredential(azureServiceAccount:“myStorageAccount”,accessKey:“myKeyIsHere”) 客户端=CloudStorageClient(凭据:凭据)

我在windows操作系统中看到过一些类似的问题,这些问题的答案似乎指向机器时钟与服务器不同步的方向

但就我而言,我真的看不到任何时钟/时间问题

有什么线索吗?

嗯,你在用这个吗

如果是这样,您的swift代码应该是

let storageAccount = AZSCloudStorageAccount(fromConnectionString: yourConnectionString)

这也应该有所帮助

您可能需要检查以下几点:1)请确保帐户名/密钥正确。2) 请检查设备上的时间,确保关闭时间不超过15-20分钟。这是授权失败的两个主要原因。帐户名和密钥绝对正确。我的设备在中欧时间运行,服务器在美国时间轴上运行。我想这已经解决了,不是问题所在。我完全无法理解的是,azure存储身份验证是如何变得如此脆弱,以至于如果有人的设备与原始时间有时间偏移,它就会失败。为什么身份验证的方式与azure移动服务不同呢?它不是脆弱的,时间因素是出于安全目的。大约15-20分钟的时钟偏差是允许的,但如果超过15-20分钟,您将得到一个错误。这是因为要防止有人获取授权标头并在很长时间内重复请求。您是否使用某个特定的库来访问Azure存储?我看不出你上面的代码。特别是,您是否正在编写自己的身份验证代码?如果是这样的话,这可能是一个值得一看的地方,尽管它在模拟器上工作,而不是在设备上工作,这很奇怪。此外,是否有可能来自设备的HTTP请求在传输过程中以某种方式被修改,而iPhone模拟器不会这样做?如果中间的某个东西以某种方式修改HTTP请求,这可能会导致AUTH失败,因为它可以将字符串更改为“感谢”MichaelCurd。我使用了另一个tweeked来处理iOS设备,但认证过程显然是针对服务器到服务器的