相关疑难解决方法(0)

JWT Token身份验证,过期令牌仍在工作,.net核心Web Api

我正在构建一个.net核心web api.

前言 - 我已根据https://stormpath.com/blog/token-authentication-asp-net-corehttps://dev.to/samueleresca/developing-token-authentication-using-aspnet-实施了令牌身份验证核心.我还在github上阅读了一些问题,在这里也是如此.

这也派上用场了https://goblincoding.com/2016/07/24/asp-net-core-policy-based-authorisation-using-json-web-tokens/.

实施之后,我感觉我错过了一些东西.

我创建了一个位于Web客户端的简单Angular应用程序.当我进行身份验证时,会向客户端发送令牌.我现在将它存储在会话中(仍然在开发中,因此将解决以后存储它的安全问题).

不确定这个(JWT(JSON Web Token)自动延长到期时间)是有用的,因为我没有实现刷新令牌,据我所见.

我注意到,当我调用logout,然后再次重新登录时,会向客户端发送一个新令牌 - 正如预期的那样.但是,如果令牌到期时间已过(我将其设置为1分钟进行测试)然后刷新页面,则令牌似乎在我的应用程序中保持不变.即好像令牌永不过期?!

我本来希望客户端返回401 Unauthorized错误,然后我可以处理强制用户重新进行身份验证.

这不是这应该如何工作?是否有一些自动刷新令牌魔法在默认的背景中进行(我没有在教程中明确设置任何刷新令牌的概念)?或者我错过了一些关于令牌身份验证的概念?

此外 - 如果这是一个永久刷新的令牌,如果令牌被泄露,我是否应该关注安全性?

谢谢你的帮助

authentication token jwt .net-core

9
推荐指数
3
解决办法
5920
查看次数

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

目前我正在使用 JWT-Bearer-Authentication 对 ASP.NET-Core WebApi 进行编程。

为了使 API 可从不同的时区访问,我使用以下模式将JWT 中的字段nbf(notBefore) 和exp(expires) 设置为 UTC 时间戳:

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

...

var tokenOptions = new JwtSecurityToken(
                notBefore: utcNow,
                expires: utcNow.AddSeconds(3600),
            );
...
Run Code Online (Sandbox Code Playgroud)

对于令牌生成,一切都很好,nbf并且exp包含代表当前 UTC 时间的 UNIX 时间戳。

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

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

c# datetime jwt .net-core

6
推荐指数
2
解决办法
2688
查看次数

标签 统计

.net-core ×2

jwt ×2

authentication ×1

c# ×1

datetime ×1

token ×1