【问题标题】:Validate IP from request against claim in JWT authentication token根据 JWT 身份验证令牌中的声明验证来自请求的 IP
【发布时间】:2016-12-23 11:59:06
【问题描述】:

我正在开发一个使用 JWT 身份验证的 .Net Core Web API(如 here)。

我添加了一个新的 Claim 来存储请求的 ip 地址,然后,我想在每个连续的请求上检查它,以验证请求的 ip 地址源是否与最初请求令牌的 ip 相同。

为此,我做了一个基于自定义策略的身份验证(如here),我想在策略的 AuthorizationHandler 上获取每个请求的 ip,但我无法获得它(this 没有'不适用于 AuthorizationHandler)。

也许这不是我想要的方式,有人可以帮助我吗?

谢谢!

【问题讨论】:

  • 您为什么不信任 JWT 并在您的服务中需要这种额外的身份验证?
  • 因为如果有人窃取了令牌,我不希望它可以从另一个 ip 使用。也许 JWT 有办法缓解这种情况,我不知道。谢谢@thoean
  • 对于一个高度复杂的问题,这听起来过于简单化了。我假设您通过 HTTPS 作为基线加密所有内容,并遵循其他做法来防止 XSS 等攻击。这是一篇有趣的文章开始:auth0.com/forum/t/stealing-jwt-from-authenticated-user/352/12
  • 是的,没错。我会读那个链接。谢谢。
  • 我也在考虑IP验证。原因是我将我的 API 暴露给有限的来源,他们不应该在允许的场所之外使用它。我不知道这是否是个好主意,但至少对少数攻击者有用。

标签: c# authentication token jwt .net-core


【解决方案1】:

最后我做的是this获取IP。

然后我添加一个ActionFilterAttribute 覆盖OnActionExecuting

在该过滤器中,我从声明中获取原始 IP,并将其与请求 IP (context.HttpContext.Connection.RemoteIpAddress) 进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-12
    • 2019-06-17
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2020-07-07
    相关资源
    最近更新 更多