Как добавить заявку auth_time во время создания jwt с помощью SecurityTokenDescriptor и ClaimsIdentity - PullRequest
0 голосов
/ 19 февраля 2020

Я создаю свой JWT из следующего кода. Мне нужно было auth_time утверждение, которое было бы похоже на

   "nbf": 1582109929,
  "exp": 1582110229,
  "iat": 1582109929,

, но я не знаю, как я могу назначить значение времени в указанном выше формате или каким-либо образом, чтобы это требование автоматически добавлялось с iat like value

public string GetIdTokenString(Dictionary<string, object> inputClaims, string secret)
    {
        string result = null;
        try
        {
            var tokenHandler = new JwtSecurityTokenHandler();
            var key = Encoding.ASCII.GetBytes(secret);

            List<Claim> claims = new List<Claim>();
            foreach (var o in inputClaims)
            {
                string val = null;
                if (o.Value != null)
                {
                    Type t = o.Value.GetType();
                    bool isDict = t.IsGenericType /*&& t.GetGenericTypeDefinition() == typeof(Dictionary<,>)*/;
                    if (isDict)
                    {
                        val = JsonSerializer.Serialize(o.Value);
                    }
                    else
                    {
                        val = o.Value.ToString();
                    }
                }
                claims.Add(new Claim(o.Key, val));
            }
            claims.Add(new Claim("sub", Guid.NewGuid().ToString()));          

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(claims),
                Expires = DateTime.Now.AddSeconds(60 * 5),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature),
                Audience = ObjInitialRequest.JwtData.ContainsKey("client_id") ? ObjInitialRequest.JwtData["client_id"] : null,
                Issuer = "...",//from well known configuration issuer
            };              
            var token = tokenHandler.CreateToken(tokenDescriptor);
            if (token != null && token is JwtSecurityToken)
            {
                result = (token as JwtSecurityToken).RawData;
            }
        }
        catch (Exception ex)
        {
            //Logger    
        }
        return result;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...