相关疑难解决方法(0)

JWT验证失败

我通过设置Payload创建了一个JwtToken,如下所示

var payload = new JwtPayload
        {
            {"aud", "wellmark.com" },
            {"iss", "wellmark" },
            {"iat", DateTime.Now.Ticks },
            {"exp", DateTime.Now.AddDays(90).Ticks },
        };
Run Code Online (Sandbox Code Playgroud)

我必须使用ticks的原因是因为这是获得发布时间和到期时间的整数值的唯一方法.我同意ticks实际上是一个很长的而不是int,但这是唯一的方法.

现在,当我回来验证令牌时,我正在执行以下操作

var tokenValidationParams = new TokenValidationParameters
            {
                IssuerSigningKey = new X509SecurityKey(jwtCert),
                ValidAudience = "masked",
                ValidIssuer = "masked",
                IssuerSigningKeyResolver = (string token, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, string kid, TokenValidationParameters validationParameters) => new List<X509SecurityKey> { new X509SecurityKey(jwtCert) }
            };

            tokenHandler.ValidateToken(id, tokenValidationParams
                   , out validatedToken);
Run Code Online (Sandbox Code Playgroud)

然而,这是失败的说法

终身验证失败.令牌缺少过期时间.Tokentype:'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'.

这很可能是因为验证方法试图长转换成int型,因为它无法将其转换,它只是返回一个空如图所示的文件中表示 这里.

有没有人在这个机制上取得成功.请注意,我使用X509证书签署我的Jwt.

拉辛哈

c# jwt

4
推荐指数
2
解决办法
4987
查看次数

标签 统计

c# ×1

jwt ×1