c# JWT 令牌创建然后令牌验证返回错误

问题描述 投票:0回答:1

我正在创建一个通过 JWT 令牌进行身份验证的 Web 应用程序。在我的 Web 程序集中,我调用 Web api 来创建/验证我的令牌。 我这样创建我的代币:

public string GenerateJwtToken(IEnumerable<Claim> claims, DateTime expireAt)
    {
        var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.Value.Key));
        var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
        var token = new JwtSecurityToken(issuer: jwtSettings.Value.Issuer,
            audience: jwtSettings.Value.Audience,
            claims: claims, 
            expires: expireAt, 
            signingCredentials: creds);
        return new JwtSecurityTokenHandler().WriteToken(token);
    }

并使用此函数验证它们:

public ClaimsPrincipal? ValidateToken(string token)
    {
        var tokenHandler = new JwtSecurityTokenHandler();
        var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.Value.Key));
        try
        {
            var tokenValidation = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = key,
                ValidateIssuer = true,
                ValidIssuer = jwtSettings.Value.Issuer,
                ValidateAudience = true,
                ValidAudience = jwtSettings.Value.Audience,
                ValidateLifetime = true
            };
            SecurityToken validateToken;
            var principal = tokenHandler.ValidateToken(token, tokenValidation, out validateToken);
            return principal;
        }
        catch (Exception)
        {
            return null;
        }
    }

但是,当我创建令牌并将

expiresAt
设置为 :
DateTime.UtcNow.AddDays(30)
然后验证我的令牌时,我收到错误:

Microsoft.IdentityModel.Tokens.SecurityTokenNoExpirationException: IDX10225: Lifetime validation failed.

有人知道为什么吗?我的 jwt 设置也被注入并正确设置。

c# .net
1个回答
0
投票

Не могу знать。 Можете обратиться в поддержку по токенам

© www.soinside.com 2019 - 2024. All rights reserved.