【问题标题】:Can not Read CyrptoJS Generated JWT using JwtSecurityTokenHandler().ValidateToken()无法使用 JwtSecurityTokenHandler().ValidateToken() 读取 CyrptoJS 生成的 JWT
【发布时间】:2019-03-07 23:06:27
【问题描述】:

我正在使用 CyrptoJS 生成一个令牌,该令牌在 jwt.io 测试表单中正确编码和解码。使用 HMACSha256。

进程抛出异常:

IDX12709: CanReadToken() returned false. JWT is not well formed: '[PII is hidden]'.
The token needs to be in JWS or JWE Compact Serialization Format. 
(JWS): 'EncodedHeader.EndcodedPayload.EncodedSignature'. 
(JWE): 'EncodedProtectedHeader.EncodedEncryptedKey.EncodedInitializationVector.EncodedCiphertext.EncodedAuthenticationTag'.

在 api 中收到的令牌是: eyAiYWxnIjogIkhTMjU2IiwgInR5cGUIiOiJKV1QifQ==.eyAiYWN0b3IiOiAiam9uZXMiLCAibmFtZSI6ICJDYXNlRWRpdCJ9.JRi5hfqItl2gne1dUJxq1dfgdgJ1zD9xn2aUJopglbI=

我用来验证令牌的代码是:

public static Boolean ValidateToken(string jwtToken,  string key)
    {
        var securityKey = new SymmetricSecurityKey(Convert.FromBase64String(key));
        var validationParameters = new TokenValidationParameters()
        {
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = securityKey
        };
        SecurityToken validatedToken;
        var claimPrincipal = new JwtSecurityTokenHandler().ValidateToken(jwtToken, validationParameters, out validatedToken);

        return validatedToken.ValidFrom <= DateTime.Now; 
    }

【问题讨论】:

    标签: javascript c# jwt


    【解决方案1】:

    问题出在 CryptoJS 的编码上,这帮助我解决了 https://www.jonathan-petitcolas.com/2014/11/27/creating-json-web-token-in-javascript.html 我没有对值进行 url 编码。删除 =

    【讨论】:

      猜你喜欢
      • 2019-10-08
      • 2013-08-04
      • 2015-09-11
      • 2022-01-14
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多