如何解决在.NET Core中创建JWT的问题
我正在使用asp.net核心创建JWT并遇到问题。
我需要像下面的伪代码一样创建JWT:
var headers = base64URLencode(HeaderData);
var payload = base64URLencode(payloadData);
var headerwithpayload = header + "." + payload;
var signature = base64URLencode(RSASHA256(headerwithpayload,privateKey));
var encodedJWT = headerwithpayload + "." + signature;
为此,创建了一个公共X509证书(.cer)和一个私有证书(.pfx),并带有密码。创建JWT的算法是RS256。
编写下面的代码来创建JWT,当我在jwt.io中用我的公共证书验证JWT时,它显示为有效签名。但是,当我将其发送给需要处理我的请求的另一个团队时,我收到 401-未经授权的错误。
// Certificate & Private Key
string certLocation = @"E:\PrivateCert.pfx";
string certPassword = "####";
var colln = new X509Certificate2collection();
colln.Import(certLocation,certPassword,X509KeyStorageFlags.PersistKeySet);
var certificate = colln[0];
var privateKey = certificate.GetRSAPrivateKey();
var privateSecurityKey = new RsaSecurityKey(privateKey);
// Header,Payload & Signature
var descriptor = new SecurityTokenDescriptor
{
Issuer = "ClientId",Audience = "audience",Expires = DateTime.UtcNow.AddMinutes(10),Subject = new ClaimsIdentity(new List<Claim> { new Claim("sub","subject") }),SigningCredentials = new SigningCredentials(privateSecurityKey,SecurityAlgorithms.RsaSha256)
};
var tokenHandler = new JsonWebTokenHandler();
string jwtValue = tokenHandler.CreateToken(descriptor);
我了解到我不是第二次使用签名对JWT进行编码,这可能会导致问题。
我如何:
- 创建编码的JWT吗?
- 从私有证书中将私有密钥提取为字符串,以便我可以像伪代码中一样完全创建编码的JWT。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。