【问题标题】:Examine Azure's Shared Access Signature validity/expiration检查 Azure 的共享访问签名有效性/过期
【发布时间】:2021-06-05 23:22:50
【问题描述】:

拥有 Azure 存储帐户的共享访问签名,是否可以检查其有效期?

我可以从?sv=2018-03-28&si=mypolicy&tn=mytable&sig=ABC... 到它的到期时间吗?

【问题讨论】:

  • 如果我正确理解您的问题,您想从令牌中找出 SAS 的到期时间。这是正确的吗?
  • @GauravMantri 正确。我有令牌,我想知道它的到期时间。

标签: azure-storage azure-blob-storage azure-table-storage azure-storage-account


【解决方案1】:

如果您在 SAS 令牌中指定了 SAS 到期值,那么您可以通过解析令牌并查看 se 参数的值来查找。当您的 SAS 令牌到期时,这将给出一个 UTC 日期/时间值。

但是,如果您在 SAS 令牌中没有 SAS 到期值(您正在使用访问策略并且到期是在访问策略本身中定义的),那么事情就会变得棘手。

你可以做两件事:

  1. 如果您有权访问帐户名和密钥,则可以获取 blob 容器的访问策略并查看具体的访问策略并找到到期日期。
  2. 一种反模式,但您可以执行该操作并捕获异常(如果有)。如果您的 SAS 令牌已过期,您将收到 AuthenticationFailed 异常。您可以查看AuthenticationErrorDetails 以了解是否由于令牌过期而导致身份验证失败。

例如,我尝试使用过期的 SAS 令牌列出 blob 容器中的 blob,然后得到以下响应:

<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:11111111-1111-1111-1111-111111111111 Time:2021-03-08T04:53:44.1329974Z</Message>
<AuthenticationErrorDetail>Signed expiry time [Sun, 28 Feb 2021 18:30:00 GMT] must be after signed start time [Mon, 08 Mar 2021 04:53:44 GMT]</AuthenticationErrorDetail>
</Error> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 2014-09-22
    • 2013-05-29
    • 2022-10-21
    • 2019-05-25
    • 2017-08-24
    相关资源
    最近更新 更多