小编Hau*_*and的帖子

使用 System.IdentityModel.Tokens.Jwt 验证外部创建的没有密钥 ID 的 JWT

鉴于 JWT 是在外部创建的,因此无法影响它,当令牌不包含kid.

这是相关代码:

private bool ValidateToken(string authToken)
{
    var tokenHandler = new JwtSecurityTokenHandler();
    var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(_secretKey));
    var validationParameters = new TokenValidationParameters()
    {
        ValidAudience = "clientid",
        ValidIssuer = _issuer,
        ValidateAudience = false,
        ValidateIssuer = false,
        IssuerSigningKey = new SymmetricSecurityKey(hmac.Key),
    };

    try
    {
        tokenHandler.ValidateToken(authToken, validationParameters, out SecurityToken validatedToken);
    }
    catch (Exception ex)
    {
        //handle exception
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

然而这会引发异常:

{
"IDX10503: Signature validation failed. 
    Token does not have a kid. 
    Keys tried: '[PII of type 'System.Text.StringBuilder' …
Run Code Online (Sandbox Code Playgroud)

c# jwt

6
推荐指数
1
解决办法
8736
查看次数

标签 统计

c# ×1

jwt ×1