如何防止使用被盗令牌进行 Rest Web 服务身份验证

Hem*_*lia 1 java security authentication rest restful-authentication

众所周知,Rest 服务是无状态的,一般的身份验证策略是使用基于令牌的身份验证。

在登录服务中,它需要返回令牌的凭据。

此令牌可能会在客户端 cookie 中设置,并且所有后续请求都使用此令牌进行验证并在令牌有效的情况下处理新请求。

现在我的问题是如何验证令牌?如果有人窃取了令牌并试图通过编辑cookie来使用窃取的令牌访问休息服务,那么如何识别和限制它呢?

我们永远无法知道令牌是否由有效用户获取并且同一用户是否正在尝试访问后续请求。但是有哪些可能的方法可以使其变得更加困难,例如验证请求是否来自同一来源?

一个一般建议是设置令牌/cookie 的老化时间,但直到该令牌/cookie 的老化时间为止它仍然没有帮助。

任何建议,将不胜感激。

Mar*_*ski 6

我不相信有任何 100% 万无一失的方法可以防止使用被盗的用户令牌进行访问。您首先怎么知道令牌被盗了?但从我的角度来看,您可能需要考虑以下内容:

  1. 使用相同的令牌但不同的用户代理访问 REST 服务是可疑的。这可以通过 User-Agent 标头的值来识别。您可能需要考虑放弃此类请求。
  2. 如果 IP 地址发生变化但令牌仍然相同怎么办?好吧,也许有人正在使用负载均衡器并通过不同的 IP 地址访问网络?或者他使用与以前相同的令牌/cookie 访问 VPN?如果您毫不犹豫地丢弃此类请求,您也可以通过检查源 IP 地址来提高安全性。
  3. 对于 JWT 令牌,您将需要一些基础设施来处理黑名单。按照这个