Как сгенерировать токен JWT для полезной нагрузки Jitsi

#c# #jwt-auth #jitsi #jitsi-meet

#c# #jwt #jitsi #jitsi-знакомьтесь

Вопрос:

Я не могу сгенерировать указанную ниже полезную нагрузку на C #. Пожалуйста, если кто-то может помочь. введите описание изображения здесь

Я использую приведенный ниже код, который генерирует неверный вывод.

 var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));
        var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);


        var permClaims = new List<Claim>();
        permClaims.Add(new Claim("aud", "jitsi"));
        permClaims.Add(new Claim("iss", "8B23A4BA85DE85D2922703F319496934"));
        permClaims.Add(new Claim("sub", "artaticsxauuio.com"));
        permClaims.Add(new Claim("room", "jd"));

        //Create Security Token object by giving required parameters    
        var token = new JwtSecurityToken(issuer, //Issure    
                        issuer,  //Audience    
                        permClaims,
                        expires: DateTime.Now.AddHours(1),
                        signingCredentials: credentials);
 
        var jwt_token = new JwtSecurityTokenHandler().WriteToken(token);
  

Неправильный вывод, который я получаю:

введите описание изображения здесь

Заранее благодарю вас. Я создаю это для JITSI.

Ответ №1:

Это работает для меня.

 using System.IdentityModel.Tokens.Jwt;
----------------------------------------------------------------------
string key = @"secret-key";

var securityKey = new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));

var credentials = new Microsoft.IdentityModel.Tokens.SigningCredentials(securityKey, "HS256");

var header = new JwtHeader(credentials);

JwtPayload payload = new JwtPayload();

payload.AddClaim(new System.Security.Claims.Claim("context", "{'user': { 'name': 'username', 'email': 'email' }}", JsonClaimValueTypes.Json));
payload.AddClaim(new System.Security.Claims.Claim("iss", @"app-key"));
payload.AddClaim(new System.Security.Claims.Claim("aud", "meet.jitsi.com"));
payload.AddClaim(new System.Security.Claims.Claim("sub", "meet.jitsi.com"));
payload.AddClaim(new System.Security.Claims.Claim("room", "TestRoom"));
                
var secToken = new JwtSecurityToken(header, payload);
var handler = new JwtSecurityTokenHandler();

var tokenString = handler.WriteToken(secToken);