首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JwtSecurityToken是否有最短的过期时间?

JwtSecurityToken是否有最短的过期时间?
EN

Stack Overflow用户
提问于 2017-12-11 13:59:35
回答 1查看 2.6K关注 0票数 3

在令牌的验证中,我检查了令牌的生存期,它是13:07:10。当我运行验证时,它是13:12,验证是成功的。为什么?

当它大约是13:15时,我再次运行验证,它抛出了一个异常,就像预期的那样。

令牌是否有最小过期时间?

创建令牌:

代码语言:javascript
运行
复制
var token = new JwtSecurityToken(
    issuer: token_issuer,
    audience: token_audience,
    claims: claims,
    expires: DateTime.Now.AddSeconds(5),                
    signingCredentials: creds
);

验证令牌:

代码语言:javascript
运行
复制
private static bool ValidateToken(string token)
{
    try
    {
        TokenValidationParameters validationParameters = new TokenValidationParameters
        {
            IssuerSigningKey = new SymmetricSecurityKey(token_salt),
            ValidAudience = token_audience,
            ValidIssuer = token_issuer,
            RequireExpirationTime = true
        };

        ClaimsPrincipal principal = new JwtSecurityTokenHandler().ValidateToken(token_last, validationParameters, out SecurityToken validatedToken);

        return true;
    }
    catch(SecurityTokenExpiredException ex)
    {

    }

    return false;
}
EN

回答 1

Stack Overflow用户

发布于 2021-05-24 19:20:19

这是由于ClockSkew令牌验证参数,它允许一个缓冲区来解释发出JWT的服务器和验证它的服务器之间的时钟差异。

在.NET Core / 5+中,您可以在启动时JwtBearer配置中的TokenValidationParameters对象中更改其值,如下所示。它的默认值是300秒,即5分钟。

代码语言:javascript
运行
复制
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.Authority = "https://some-jwt-token-issuer.com";
            options.TokenValidationParameters = new TokenValidationParameters()
            {
                // Set the below to eliminate the skew
                ClockSkew = TimeSpan.Zero 
            };
        });
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47754556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档