我们正在使用Open id connect身份验证代码流来从外部授权服务器获取刷新令牌和访问令牌。我正在考虑使用IdentityModel库从代码中检索令牌。
https://github.com/IdentityModel/IdentityModel2/blob/dev/README.md
令牌将以过期日期存储在数据库中。
我想了解检查访问令牌是否已过期的最佳做法。我知道以下方法之一将有助于实现这一目标。想知道是否有更清洁,更好的方法。
还有其他更好的方法吗?
答案 0 :(得分:1)
_tokenClient = new TokenClient(_options.Authority);
var response = await _tokenClient.RequestAuthorizationCodeAsync("CODE", "http://myuri");
var token = response.AccessToken;
var validUntil = DateTime.Now.AddSeconds(response.ExpiresIn);
稍后我可以使用此值来检查令牌是否仍然有效。您可以将有效的until值存储在数据库中,也可以将其附加到用户会话中。
if(DateTime.Now >= validUntil)
{
// token expired
}
我通常会从这个值减去几分钟 - 所以我不必等到最后一分钟再刷新令牌。