检查 Azure 的共享访问签名有效性/过期时间



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

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

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

最新更新