代码之家  ›  专栏  ›  技术社区  ›  learningdotnet

如何在C中的JWT令牌中添加字段#

  •  0
  • learningdotnet  · 技术社区  · 3 年前

    我想创建一个示例控制台应用程序来生成以下格式的JWT令牌。我创建了一个简单的控制台应用程序来生成JWT,但在如何将所有必需的字段添加到上有点困难。 下面是我的控制台应用程序代码示例。

    Console.WriteLine("");
    string key = "dummykey";
    var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));
    var credentials = new SigningCredentials
                      (securityKey, SecurityAlgorithms.HmacSha256Signature);
    var header = new JwtHeader(credentials);
    
    //Some dummy PayLoad
    var payload = new JwtPayload
               {
                   { "firstname ", "lastname "},
                   { "scope", "read,write"},
               };
    
    var secToken = new JwtSecurityToken(header, payload);
    var handler = new JwtSecurityTokenHandler();
    
    var tokenString = handler.WriteToken(secToken);
    
    Console.WriteLine("JWT Token is : ");
    Console.WriteLine(tokenString);
    
    Console.ReadLine();
    

    上面的代码生成了一个JWT,格式如下。

    HEADER:ALGORITHM & TOKEN TYPE
    
    {
      "alg": "http://www.w3.org/2001/04/xmldsig-more#hmac-sha256",
      "typ": "JWT"
    }
    PAYLOAD:DATA
    
    {
      "firstname ": "lastname ",
      "scope": "read,write"
    }
    VERIFY SIGNATURE
    
    HMACSHA256(
      base64UrlEncode(header) + "." +
      base64UrlEncode(payload),
    )
    

    我想要它如下。

    {
    "schema":"value",
    "majver":1,
    "minver":0,
    "sub":"value",
    "scope":"read,write",
    "iss":"value",
    "exp":date,
    "nbf":date,
    "iat":date,
    "jti":"value",
    "emp_id":"value",
    "act":
       {
          "typ":"value",
          "sub":"value"
       }
    }
    
    0 回复  |  直到 3 年前