如何使用 .NET Core 使用 UTC 时间验证 JWT

2023-12-22

目前我正在使用 JWT-Bearer-Authentication 编写 ASP.NET-Core WebApi。

为了使 API 可以从不同时区访问,我使用以下模式来设置字段nbf(不是之前)和exp(过期)在我的 JWT 内到 UTC 时间戳:

var utcNow = DateTime.SpecifyKind(DateTime.UtcNow, DateTimeKind.Unspecified);

...

var tokenOptions = new JwtSecurityToken(
                notBefore: utcNow,
                expires: utcNow.AddSeconds(3600),
            );
...

对于代币生成来说,一切都运行良好,nbf and exp包含表示当前 UTC 时间的 UNIX 时间戳。

但是在进行令牌验证时,一切都有效 5 分钟(我的时钟偏差设置),然后我只从 API 得到 401,因为令牌验证是使用我在德国当前的时区完成的。

有没有办法在 .NET-Core 中设置 JwtAuthentication-Middleware 以使用 UTC 时间进行令牌验证?或者还有其他方法可以解决这个问题吗?


如需更完整的答案,请在您的Startup.cs:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.TokenValidationParameters = new TokenValidationParameters
            {
                // ...
                ValidateLifetime = true,
                LifetimeValidator = (DateTime? notBefore, DateTime? expires, SecurityToken securityToken, 
                                     TokenValidationParameters validationParameters) => 
                {
                    return notBefore <= DateTime.UtcNow &&
                           expires > DateTime.UtcNow;
                }
            };
        });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 .NET Core 使用 UTC 时间验证 JWT 的相关文章

随机推荐

  • 从 ElasticBeanstalk EC2 到 Redis (ElastiCache) 的连接失败

    我们使用 ElasticBeanstalk 来设置一些 Node js 环境 目前 我们使用 Redis 作为会话存储 它设置在 ElastiCache 中 当我 ssh 进入 EC2 实例并 netcat Redis 存储时 我可以确认网
  • C# 泛型接口协方差

    我不确定这里发生了什么 但我使用以下代码收到编译器错误 namespace SO interface IUser
  • 如何检查浏览器是否支持 Polymer?

    我如何检查 JS 或 HTML 代码 当前浏览器是否支持 Polymer 简短回答 快速测试 Firefox 38 0 5 提示 否 而 Chrome 44 0 2403 130 m 提示 是 function supportsPolyme
  • javascript 中的异步和等待[重复]

    这个问题在这里已经有答案了 我是初学者JS并在经历时async and await我遇到了下面的例子 const get async gt const y await hello console log y console log star
  • Visual Studio:防止打开解决方案资源管理器中的文件夹时折叠

    每次我在 Visual Studio 2022 中打开项目时 解决方案资源管理器树中的所有文件夹都会崩溃 这非常烦人并且打断了我的工作流程 我找不到这方面的任何设置 有没有办法阻止这种行为 这似乎也发生在旧版本的 Visual Studio
  • 根据另一个数组的值(未排序,而是分组)将 NumPy 数组拆分为子数组

    假设我有两个 NumPy 数组 x 1 2 8 2 9 1 3 8 9 4 3 5 5 2 3 6 4 7 7 2 3 8 2 2 9 5 3 10 2 3 11 2 4 y 0 0 1 0 1 1 2 2 2 0 0 笔记 值在x没有以任
  • 是否可以让 Node.js 使用 Rhino 作为 Javascript 引擎?

    我在网络应用程序上使用 Node js 完成多项工作 到目前为止一切正常 但 Node js 使用 Google 的 V8 作为默认的 Javascript 引擎 JSE 并且 V8 只能在 x86 和 ARM 指令集架构 ISA 上运行
  • 在标签栏控制器/导航控制器上方添加自定义视图?

    我尝试了以下代码 试图获取显示在选项卡栏控制器上方的自定义视图 该控制器恰好在所有选项卡中都有一个导航控制器 问题是它覆盖在导航栏的顶部 我希望导航栏向下移动 我尝试设置标签栏控制器的框架 但这根本没有移动它 BOOL applicatio
  • NSMutableString appendString 的内存泄漏

    我正在使用 XMLParser 来解析一些 XML 数据 它使用 NSMutableString resultString 来存储标签字符 在每个 parser didStarElement 方法中 我分配并初始化 resultString
  • 任何域对象都应该不可序列化吗?

    有没有办法告诉编译器 我希望我的对象默认可序列化 几乎每个序列化引擎都想知道您的对象是否合适 这可以采取以下形式 Serializable ISerializable BinaryFormatter SoapFormatter Serial
  • 在 TWinControl 类上添加属性

    我想将已发布的属性添加到 TWinControl 中 有没有办法在不需要重新编译基本源代码的情况下做到这一点 如果没有 有什么方法可以重新编译基本源代码而不需要太多麻烦 谢谢建议 编辑因为新想法 好吧 我想做的就是尝试覆盖 System p
  • 如何防止 Python print 添加换行符或空格? [复制]

    这个问题在这里已经有答案了 在Python中 如果我说 print h 我收到字母 h 和换行符 如果我说 print h 我收到字母 h 并且没有换行符 如果我说 print h print m 我得到字母 h 一个空格和字母 m 如何防
  • 如何根据javascript中的键合并和替换两个数组中的对象?

    我有两个数组对象 arrayList1 arrayList2 只是我试图将这两个数组合并为一个数组对象 我使用的以下术语 根据键名将两个数组合并为一个数组是type arrayList2 的值将覆盖 arrayList1 我得到了预期的输出
  • 我们如何在 React Native 应用程序中设置 .env?

    我们如何设置 env在反应本机应用程序中 如何在react native中进行环境设置 我使用 react native dotenv 包 安装它并将 react native dotenv 预设添加到项目根目录下的 babelrc 文件中
  • XBAP 与 FireFox 和 Windows 7

    Firefox 依赖 NET 3 5 安装程序安装的扩展和插件来运行 XBAP 不幸的是 在 Windows 7 中已经安装了 NET 3 5 运行时 有谁知道如何获取这些插件 扩展 以便您可以实际将 XBAP 部署到 Windows 7
  • Flex:当文本太长时换行

    我在想是否可以使用css来实现以下功能flexbox 在布局中 原来有2个div彼此相邻 左侧包含一组图标并具有固定宽度 右侧包含文本 可能会很长 有没有办法 如何使用只有CSS 尤其是Flexbox 当文本太长时 div 会换行 在第一个
  • 别名可变原始指针 (*mut T) 是否会导致未定义的行为?

    mut T and mut T导致编译错误 这太棒了 两次可变借用在客观上是错误的 Is mut T and mut T未定义的行为还是这是完全有效的事情 也就是说 可变指针别名有效吗 更糟糕的是 mut T and mut T实际上编译并
  • 使计算属性依赖于 emberjs 中另一个对象的所有属性

    是否可以使一个属性依赖于另一个对象的所有属性 例如 也在jsfiddle中 http jsfiddle net xgZ94 2 html javascript App Em
  • Doctrine - 存储 ArrayCollection 键

    每当我将 ArrayCollection 与 Doctrine ORM 2 3 PHP gt 5 4 一起使用 并将对象值与集合中的键相关联时 例如当使用set方法 值被正确存储在数据库中 但是当我想从实体检索集合时 不会检索键 而是使用数
  • 如何使用 .NET Core 使用 UTC 时间验证 JWT

    目前我正在使用 JWT Bearer Authentication 编写 ASP NET Core WebApi 为了使 API 可以从不同时区访问 我使用以下模式来设置字段nbf 不是之前 和exp 过期 在我的 JWT 内到 UTC 时