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

Posted

技术标签:

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

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

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

【问题讨论】:

如果我正确理解您的问题,您想从令牌中找出 SAS 的到期时间。这是正确的吗? @GauravMantri 正确。我有令牌,我想知道它的到期时间。 【参考方案1】:

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

【讨论】:

以上是关于检查 Azure 的共享访问签名有效性/过期的主要内容,如果未能解决你的问题,请参考以下文章

如何测试 Azure AD 访问令牌过期

签名验证前发件人证书已过期

刷新的 OAuth2 令牌具有无效签名 (Azure AD OAuth2)

带有 AdlsClient 的 Azure MSI:访问令牌已过期

如何配置 Azure AD 访问令牌的过期时间(使用 ADAL)?

如何在 Quickblox iOS SDK 中检查会话是不是有效或过期?