【问题标题】:JWT creation is missing the signature portionJWT 创建缺少签名部分
【发布时间】: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


【解决方案1】:

您需要将描述符作为参数传递给CreateToken

var token = tokenHandler.CreateToken(descriptor);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-25
    • 2018-05-10
    • 1970-01-01
    • 2019-07-27
    • 2016-07-01
    • 2016-12-25
    • 2023-04-09
    • 2022-01-26
    相关资源
    最近更新 更多