检查 Azure 的共享访问签名 validity/expiration

Examine Azure's Shared Access Signature validity/expiration

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

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

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

但是,如果您在 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>