oauth2.0 检查Microsoft图形令牌过期

kmynzznz  于 2023-10-15  发布在  其他
关注(0)|答案(2)|浏览(110)

我正在使用访问和刷新令牌来执行一些Microsoft图形查询。当访问令牌过期时,我使用刷新令牌执行标准令牌刷新过程。当我使用过期的token进行查询时,我得到以下错误:

{ 
"error": {
      "code": "InvalidAuthenticationToken",
      "message": "CompactToken validation failed with reason code: 80049228.", 
      "innerError": { 
          "request-id": "f4853bd8-1cf1-44eb-b4a6-b3c695223762", 
          "date": "2019-09-05T17:39:42" 
        }
    }
}

我已经在try/catch中 Package 了一个查询,当我得到一个错误时,我会比较消息,因为InvalidAuthenticationToken可以在更多的情况下找到,而不仅仅是过期。是否有更好的方法来检查访问令牌过期?错误代码本身没有暴露的原因是什么?

bxgwgixi

bxgwgixi1#

最简单的方法是使用MSAL SDK并让它处理令牌的该高速缓存/刷新。
或者,我建议简单地尝试获取令牌,并在失败时(typically AADSTS700020)启动用户操作以重新获取令牌。
原因是令牌可能会由于超出您控制范围的情况(证书撤销,条件访问策略,多因素要求)而无效。如果使用令牌,仅检查令牌过期并不能保证成功。

k5hmc34c

k5hmc34c2#

由于访问令牌过期而发生此错误。您可以使用访问令牌访问API
访问令牌的默认生存期是可变的。发布时,Microsoft身份平台会分配一个范围在**60-90分钟(平均75分钟)**之间的随机值作为访问令牌的默认生命周期。当访问令牌过期时,您可以通过此Microsoft API获取新的访问令牌

data = {
   "grant_type": "refresh_token",
   "client_id": "Your Client_id",
   "client_secret": "Your Client_secret",
   "refresh_token": refresh_token
}
response = requests.post('https://login.microsoftonline.com/consumers/oauth2/v2.0/token', data)

当使用上述请求生成新的访问令牌和刷新令牌时,您可以访问进一步的Microsoft图形查询

相关问题