如何解决检查 Azure 的共享访问签名有效性/到期时间
拥有 Azure 存储帐户的共享访问签名,是否可以检查其有效期?
我可以从 ?sv=2018-03-28&si=mypolicy&tn=mytable&sig=ABC...
转到其到期时间吗?
解决方法
如果您在 SAS 令牌中指定了 SAS 到期值,那么您可以通过解析令牌并查看 se
参数的值来查找。当您的 SAS 令牌到期时,这将给出一个以 UTC 表示的日期/时间值。
但是,如果您在 SAS 令牌中没有 SAS 到期值(您正在使用访问策略并且到期时间在访问策略本身中定义),那么事情就会变得棘手。
您可以做两件事:
- 如果您有权访问帐户名和密钥,则可以获取 blob 容器的访问策略并查看特定的访问策略并找到到期日期。
- 一种反模式,但您可以执行操作并捕获异常(如果有)。如果您的 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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。