为什么 JWT 是安全的?

信息安全 验证
2021-08-25 13:06:39

我想确保我在身份验证中使用 JWT 是正确的。有几个问题我不明白。这是我目前的理解:

  • 当用户登录时,服务器将创建一个 JWT,其中的第三部分是使用密钥创建的签名。
  • 在进一步调用 API 时,用户可以在标头中包含 JWT,服务器将能够再次使用密钥检查签名。这意味着拦截了 JWT 的攻击者无法以任何方式更改有效负载,因为如果他们这样做了,那么签名将不匹配。

问题

  • 如果攻击者设法获得了 JWT,这是否会使他们能够使用 API,就好像他们是最初经过身份验证的用户一样?
  • 我正在考虑在有效负载中包含一个到期时间戳,以便用户不得不偶尔登录。这是使 JWT 过期的正确方法吗?
1个回答

问题

如果攻击者设法获得了 JWT,这是否会使他们能够使用 API,就好像他们是最初经过身份验证的用户一样?

是的。就像攻击者设法获取用户会话 ID 一样。但是,这就是您想要限制 JWT 生命周期的原因。

我正在考虑在有效负载中包含一个到期时间戳,以便用户不得不偶尔登录。这是使 JWT 过期的正确方法吗?

是的。另外,您可能想要添加撤销机制。这篇文章很好地介绍了这个主题:https ://stormpath.com/blog/token-auth-spa/