Я внедряю Mechanizm для управления токенами в своем приложении, и я использую такой код для создания JwtSecurityToken
var securityTokenDescriptor = new SecurityTokenDescriptor()
{
Subject = claims,
SigningCredentials = signingCredentials,
Expires = DateTime.UtcNow.AddMinutes(ACCESS_TOKEN_LENGHT_MINUTES),
IssuedAt = DateTime.UtcNow
};
var tokenJwt = tokenHandler.CreateJwtSecurityToken(securityTokenDescriptor);
И неожиданно даты в "tokenJwt" различаются, чем в securityTokenDescriptor
Оба "ValidTo" с "Expires" и "ValidFrom" с "IssuedAt" отличаются ровно на один час.
Я полагаю, что это связано с изменением времени между летними/зимними временами (в настоящее время это зимнее время) или фактом, что я живу в часовой пояс UTC +1: 00.
Я попытался использовать как DateTime.Now, так и DateTime.UtcNow, но есть одна и та же проблема с обоими из них
Кто-нибудь знает, почему это происходит так и знает решение этой проблемы?
У меня возникла аналогичная проблема, и я нашел решение.
Вместо того, чтобы использовать
IssuedAt = DateTime.UtcNow
Вы хотите использовать
NotBefore = DateTime.UtcNow
Кажется, что
SecurityToken.ValidFrom
Принимает значение из поля NotBefore, и если вы его не подадите, он автоматически сгенерирует его.
Надеюсь это поможет.