3

我正在尝试检查客户端 SAS 密钥的到期日期,以便在它到期后我可以请求新的 SAS 密钥。我正在使用Microsoft.WindowsAzure.Storage命名空间(这是 azure 存储库的 2.0 版)。是否有内置方法或者我必须手动解析它?

4

2 回答 2

3

我不相信存储客户端库中有任何特定内容。您应该能够解析 URI 上的查询字符串并查看signedexpiry. 您可以使用 解析查询字符串HttpUtility.ParseQueryString()

这里有两个需要考虑的警告:

  • 此检查不会完全准确,因为您的机器时钟和存储服务的时钟之间可能存在时钟偏差。
  • 如果服务器使用共享访问策略(允许以编程方式修改/撤销访问),则不能保证signedexpiry它将成为查询字符串的一部分。更多关于共享访问策略的信息
于 2013-09-04T00:43:05.067 回答
1

对于如何解析到期时间(+1)的问题,大卫的回答是正确的。但最终你不应该这样做。有两个更好的选择:

  1. 客户端应尝试访问资源,然后通过请求新的 SAS 来处理身份验证失败。
  2. 为客户端提供一种确定 SAS 到期时间的方法,然后客户端将跟踪该时间并在到期前的某个时间间隔进行刷新。这方面的一个示例显示在http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06/12/introducing-table-sas-shared-access-signature-queue-sas-and-update-to -blob-sas.aspx
于 2013-09-04T03:13:19.467 回答