c# - JwtSecurityToken 与 SecurityTokenDescriptor 中的日期不同

标签 c# datetime token

我正在实现 mechanizm 来管理我的应用程序中的 token ,并且 我使用这样的代码来创建 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 中的日期不同

带有“Expires”的“ValidTo”和带有“IssuedAt”的“ValidFrom”在整整一小时内不同。

我想这与夏令时/冬令时之间的时间变化有关(目前是冬令时),或者我住在 UTC +1:00 时区。

我尝试同时使用 DateTime.Now 和 DateTime.UtcNow 但它们都存在相同的问题

有谁知道为什么会这样并且知道这些问题的解决方案吗?

最佳答案

我遇到过类似的问题,并且找到了解决方案。

而不是使用

IssuedAt = DateTime.UtcNow

你想使用

NotBefore = DateTime.UtcNow

好像是

SecurityToken.ValidFrom

从 NotBefore 字段中获取它的值,如果您不提供它,它会自动生成一个。

希望这对您有所帮助。

关于c# - JwtSecurityToken 与 SecurityTokenDescriptor 中的日期不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42575898/

相关文章:

c - 简单的 minishell,由于 fgets 的工作方式,无法识别 "quit"以结束程序

JavaScript:未捕获语法错误:else if 行上出现意外标记

java - 迭代器实现只读取字符串中的第一个标记?

c# - ToolStripMenuItem ShowDropDown - 事件未触发

java - 如何获取当前日期时间——date() 和 calendar()

c# - Excel 公式伪代码

android - 使用 Joda 时间将 12 小时时间转换为 24 小时时间

sql-server - 在 SQL Server 中筛选日期时间列

c# - 值类型变量是否违反栈的LIFO性质

c# - 如何删除数组中的重复值?