检查 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 的共享访问签名有效性/过期的主要内容,如果未能解决你的问题,请参考以下文章
刷新的 OAuth2 令牌具有无效签名 (Azure AD OAuth2)
带有 AdlsClient 的 Azure MSI:访问令牌已过期