【发布时间】:2018-03-14 15:57:49
【问题描述】:
我正在尝试生成一个 JWT 以用作 HTTP 请求的授权标头。
这发生在 C# 中,使用来自 Nuget 的 System.IdentityModel.Tokens.Jwt 包。我的代码如下:
byte[] certByteArray = Convert.FromBase64String("CertificatePrivateKeyPlaceholder");
var certificate = new X509Certificate2(certByteArray, "MyPassword");
var tokenHandler = new JwtSecurityTokenHandler();
var descriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new[]
{
new Claim("Issuer", "MyIssuer"),
new Claim("Audience", "MyAudience")
}),
EncryptingCredentials = new X509EncryptingCredentials(certificate),
SigningCredentials = new X509SigningCredentials(certificate, SecurityAlgorithms.RsaSha256Signature, SecurityAlgorithms.Sha256Digest),
};
var token = tokenHandler.CreateToken();
string stringToken = "bearer " + tokenHandler.WriteToken(token)
最后stringToken 看起来像一个JWT,但它的格式是aaaa.bbbb.,并且似乎签名部分(在第二个. 之后丢失了)
关于我可能做错了什么的任何指针?
【问题讨论】:
-
哦,该死的,这是我的疏忽。谢谢!将其发布为答案,我会接受它:)
-
很高兴为您提供帮助 :)
标签: c# encryption jwt