JWT / 会话 Cookie 身份验证混合
JWT / Session Cookie Authentication Hybrid
我正在寻找有关我们当前项目中仅使用 JWT 的安全问题的一些说明。
基本上它现在是这样工作的:
用户在身份验证服务中使用用户名+密码进行身份验证
前端获取 JWT
前端可以在与后端的通信中使用这个JWT。
但出于多种原因,这似乎不安全,因此我们讨论了这一点,并提出了一些使其更安全的想法:
另外加密 JWT,基本上创建一个嵌套的 JWT (JWE) 并在注销时使用黑名单...但这里的问题仍然是为什么使用 JWT 而不是像 Shared 这样的有状态身份验证会话和 Redis 服务
实施 Api-网关,以便前端或用户获取会话 cookie,并且网关与 JWT 一起用于后端和身份验证。不幸的是,我没有发现任何类似的实现
我们只是想在 Login/Logout 中保持安全,并且在未来可以扩展,以便可能有 X 个其他后端。
对于任何错误表示歉意,英语不是我的第一语言,我很乐意回答有关此的任何问题。
保重。
你说得对,在前端保留令牌存在一些安全问题。当前的最佳做法是尝试将令牌完全排除在浏览器之外。在 Curity,我们将一种可能的解决方案描述为 Token Handler pattern. It adds a bit more complexity to your system but enables you to use secure sessions on the front instead of any tokens. We have provided a few implementations of the components needed by the Token Handler, you can have a look at how to run our complete example here: https://curity.io/resources/learn/token-handler-spa-example/
关于您的第一个想法,如果您想实施黑名单令牌,那么您实际上是在实施会话,最好使用 cookie 和普通的旧 HTTP 会话。 JWE 保护您令牌的内容,但攻击者仍然可以窃取此类令牌并使用它来调用您的 API。
我正在寻找有关我们当前项目中仅使用 JWT 的安全问题的一些说明。
基本上它现在是这样工作的:
用户在身份验证服务中使用用户名+密码进行身份验证
前端获取 JWT
前端可以在与后端的通信中使用这个JWT。
但出于多种原因,这似乎不安全,因此我们讨论了这一点,并提出了一些使其更安全的想法:
另外加密 JWT,基本上创建一个嵌套的 JWT (JWE) 并在注销时使用黑名单...但这里的问题仍然是为什么使用 JWT 而不是像 Shared 这样的有状态身份验证会话和 Redis 服务
实施 Api-网关,以便前端或用户获取会话 cookie,并且网关与 JWT 一起用于后端和身份验证。不幸的是,我没有发现任何类似的实现
我们只是想在 Login/Logout 中保持安全,并且在未来可以扩展,以便可能有 X 个其他后端。
对于任何错误表示歉意,英语不是我的第一语言,我很乐意回答有关此的任何问题。
保重。
你说得对,在前端保留令牌存在一些安全问题。当前的最佳做法是尝试将令牌完全排除在浏览器之外。在 Curity,我们将一种可能的解决方案描述为 Token Handler pattern. It adds a bit more complexity to your system but enables you to use secure sessions on the front instead of any tokens. We have provided a few implementations of the components needed by the Token Handler, you can have a look at how to run our complete example here: https://curity.io/resources/learn/token-handler-spa-example/
关于您的第一个想法,如果您想实施黑名单令牌,那么您实际上是在实施会话,最好使用 cookie 和普通的旧 HTTP 会话。 JWE 保护您令牌的内容,但攻击者仍然可以窃取此类令牌并使用它来调用您的 API。