В моем приложении есть следующий код для создания JWT для аутентификации в REST API:
private string GenerateToken(List<Claim> identityFields)
{
var key = Convert.FromBase64String(__SECRET);
var securityKey = new SymmetricSecurityKey(key);
var descriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(identityFields.ToArray()),
Expires = DateTime.UtcNow.AddDays(1),
SigningCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature)
};
var handler = new JwtSecurityTokenHandler();
var token = handler.CreateJwtSecurityToken(descriptor);
return handler.WriteToken(token);
}
Параметр identityFields - это объект со значениями от пользователя (которые здесь не актуальны).
Моя основная проблема заключается в том, что когда я отправляю два запроса этому методу за одну секунду (я имею в виду, например, 2019-01-23 14: 57: 59.827 и 2019-01-23 14: 57: 59.350) , он генерирует один и тот же JWT для обоих сеансов (принимая во внимание, что, конечно, «identityFields» одинаково), потому что свойство «Expires» не имеет значения в миллисекундах.
Как можно решить эту проблему?
Я использую официальную библиотеку JWT (System.IdentityModel.Tokens.Jwt), а не пользовательский код.
Спасибо!