【发布时间】:2019-08-27 23:44:32
【问题描述】:
我正在尝试加载私钥来签署 JWT 令牌。我得到以下代码,但异常失败:
string key =@"-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCTLOQaZ3D0ayC1BSW4LCs3gYmu
eYiWDGRT491PJt/4
-----END PRIVATE KEY-----";
var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));
var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.RsaSha512);
var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));
var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.RsaSha512);
var header = new JwtHeader(signingCredentials);
var t = DateTime.UtcNow - new DateTime(1970, 1, 1);
int iat = (int)t.TotalSeconds;
var payload = new JwtPayload
{
{ "iss", "1234-5678-9012-1221-11111"},
{ "iat", iat },
{ "exp", iat + 900},
{ "sub", "aaaaaaaaaaa" }
};
var secToken = new JwtSecurityToken(header, payload);
var tokenString = new JwtSecurityTokenHandler().WriteToken(secToken);
===============答案===============================
对于任何面临同样问题的人,这里是解决方案。您需要阅读底部的帖子才能使用它:
http://www.donaldsbaconbytes.com/2016/08/create-jwt-with-a-private-rsa-key/
【问题讨论】:
-
请同时提供异常信息。
-
异常没有意义。我想我使用了错误的安全格式。我想要实现的是我想使用“RS512”从私钥编码 JWT 令牌。所以,我必须了解如何从密钥值中获取安全密钥对象。
-
我编辑了你的问题。您使用密钥对令牌进行签名,而不是进行编码。令牌是 base64url 编码的,但这与密钥无关。密钥用于签名。
-
谢谢。我想到了。所以会在这里发布解决方案
-
在这个问题上运气好吗?