Open id连接访问令牌到期

时间:2018-01-11 15:55:09

标签: c# asp.net-web-api access-token openid-connect

我们正在使用Open id connect身份验证代码流来从外部授权服务器获取刷新令牌和访问令牌。我正在考虑使用IdentityModel库从代码中检索令牌。

https://github.com/IdentityModel/IdentityModel2/blob/dev/README.md

令牌将以过期日期存储在数据库中。

我想了解检查访问令牌是否已过期的最佳做法。我知道以下方法之一将有助于实现这一目标。想知道是否有更清洁,更好的方法。

  1. 使用过期的令牌访问受保护的服务。猜猜它会抛出异常
  2. 将到期日期与今天的日期进行比较。
  3. IdentityModel库中是否有办法检查访问令牌的到期时间?
  4. 还有其他更好的方法吗?

1 个答案:

答案 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
        }

我通常会从这个值减去几分钟 - 所以我不必等到最后一分钟再刷新令牌。