我想确保我在身份验证中使用 JWT 是正确的。有几个问题我不明白。这是我目前的理解:
- 当用户登录时,服务器将创建一个 JWT,其中的第三部分是使用密钥创建的签名。
- 在进一步调用 API 时,用户可以在标头中包含 JWT,服务器将能够再次使用密钥检查签名。这意味着拦截了 JWT 的攻击者无法以任何方式更改有效负载,因为如果他们这样做了,那么签名将不匹配。
问题
- 如果攻击者设法获得了 JWT,这是否会使他们能够使用 API,就好像他们是最初经过身份验证的用户一样?
- 我正在考虑在有效负载中包含一个到期时间戳,以便用户不得不偶尔登录。这是使 JWT 过期的正确方法吗?