这是我在MVC中使用JWT的第一个实现。我在控制器中创建了以下标记,以便在它们到达我的端点时传递到前端。我在JWT.io上使用过这个工具,但我不确定它是否有用以及我在签名部分'秘密'中放了什么。它表示无效的令牌签名,但我可以看到有效负载。这是代码:
任何帮助或指向正确的方向,看看它是如何工作的将是伟大的。
var payload = new Dictionary<string, object>()
{
{ "id", "example123" },
{ "Name", "John Doe" }
};
X509Certificate2 certX509 = new X509Certificate2(pfxFile, password);
byte[] privateKey = certX509.Export(X509ContentType.Cert, password);
string token = Jose.JWT.Encode(payload, privateKey, JwsAlgorithm.HS256);
//string[] getSecret = token.Split(".".ToCharArray());
//secret = getSecret[2];
return token;
结果,看起来像JWT令牌:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImV4YW1wbGUxMjMiLCJOYW1lIjoiSm9obiBEb2UifQ.j4Ub0iWU-6xTbc3pvwfBy0v0o-Y2Ds6C5_ez3NIRnIk
但它不会在https://jwt.io/上验证。提前谢谢你:)
修改
在玩了更多之后我发现如果我创建一个字符串然后将其转换为字节数组然后使用签名框中的文本验证!! 。因为我的当前字节数组是从pfx填充的,所以要输入的值是未知的。