确定AccessToken是否过期

时间:2018-11-12 15:09:42

标签: asp.net-core-2.0 identityserver4

我正在使用带有刷新令牌的混合流。我想限制从Web服务器到身份验证/资源服务器的呼叫,即资源服务器的未经授权的错误和访问令牌的不必要的更新

问题: 访问令牌上是否有到期日,或者是否可以将到期或发布日期时间添加到访问令牌中?我想在刷新令牌之前使用它进行测试。

我想在Web服务器上执行此验证。我只需要访问令牌上的发布日期

我确实知道到期日期不是完整的证明,并且令牌可能仍然无效,但是当出现这种情况时,我可以满足这种情况。

谢谢

2 个答案:

答案 0 :(得分:1)

Web服务器是客户端。客户端可以这样读取到期时间(已经是访问令牌的一部分):

using System.IdentityModel.Tokens.Jwt;

public class HomeController : Controller
{

    public async Task<IActionResult> CallApiUsingUserAccessToken()
    {
        var accessToken = await HttpContext.GetTokenAsync("access_token");

        // Read expiration time
        var tokenHandler = new JwtSecurityTokenHandler();
        var jwtSecurityToken = tokenHandler.ReadJwtToken(accessToken);

        var validTo = jwtSecurityToken.ValidTo;

        // ...
    }
}

我刚刚添加了有关读取到期时间的行。 HomeController是MvcClient项目的一部分,该项目在5_HybridFlowAuthenticationWithApiAccess示例中可用。

答案 1 :(得分:0)

客户端配置允许设置以下有关访问令牌生存期的属性:

AccessTokenLifetime :访问令牌的生存时间(以秒为单位)

AbsoluteRefreshTokenLifetime :刷新令牌的最大生存期

RefreshTokenExpiration :固定时间到期(具有绝对和滑动选项)

以下是有关此文档: http://docs.identityserver.io/en/release/reference/client.html