JWT 签名无效

我知道。我知道。很多问题都与这个确切的标题有关。但在我看过的所有这些中,我找不到一个使用 List<Claim>issuer 和 来创建 JWT audience

    private string GetTokenString()

    {

        var claims = new List<Claim>()

        {

            new Claim("claim1", "foo-anything"),

            new Claim("claim2", "bar-anything")

        };


        string keyValue = "1234567890qwertyuiopasdfghjklzxcvbnm";  // NOT THE REAL KEY (changed for this SO question)

        var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(keyValue));


        var jwtToken = new JwtSecurityToken

          (

              issuer: "https://xxxxxx.net",

              audience: "https://www.xxxxxx.com",

              claims: claims,

              signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256Signature),

              expires: DateTime.Now.AddMinutes(30)

          );


        var handler = new JwtSecurityTokenHandler();

        string tokenString = handler.WriteToken(jwtToken);


        return tokenString;

    }

然后,如果我将 tokenString 插入 https://jwt.io/,我获取


签名无效


我创建 JWT 的方式有问题吗?

https://img1.sycdn.imooc.com/657e5dbe000135be15060843.jpg

qq_笑_17
浏览 55回答 1
1回答

萧十郎

查看签名密钥的 Base64 编码1234567890qwertyuiopasdfghjklzxcvbnm结果是这样的MTIzNDU2Nzg5MHF3ZXJ0eXVpb3Bhc2RmZ2hqa2x6eGN2Ym5t请使用此值来验证生成的令牌,在这种情况下,应选中该复选框。如果将该复选框留空,则使用与代码中相同的值。
打开App,查看更多内容
随时随地看视频慕课网APP