【发布时间】:2018-03-05 04:20:49
【问题描述】:
这是我在 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 填充的,所以要输入的值是未知的。
【问题讨论】:
标签: c# asp.net-mvc jwt