OpenID Connect使用JWTs做认证,安全性如何保证?
Given that OpenID Connect uses JWTs for Authentication, how is the safety ensured?
所以我试图了解各种登录(身份验证)机制,似乎有大约 3 种方法可以做到这一点,即:(如果我错了请纠正我):
- 会话(有状态)
- JWT(无状态和有状态)
- OpenID 连接
这篇博客 post ( Stop using JWTs for web sessions ) 涵盖了 JWT 在使用 JWT 维护会话的上下文中的许多缺点。当我读到 OpenID Connect 时,发现他们使用 JWT 令牌作为 ID 令牌来验证用户身份。博客 post 描述了 XSS 攻击、恶意 javascript 代码窃取令牌(和令牌信息)等缺点。
那么,OpenID Connect 如何确保其身份验证和会话维护是安全的?
此外,如果 JWT 被用作“短期一次性使用令牌”,那么如何让用户保持登录状态而不提示他们在每隔几次后重新登录minutes/hours?
通常,在使用 OpenID Connect 登录后,访问权限和 ID-token 会返回到后端客户端。 ID-token 然后用于创建传统的会话 cookie。 ID-Token 然后被扔掉。一旦会话 cookie 建立,这就是用户保持登录状态的方式。ID-token 通常具有非常短的生命周期。访问令牌的目的是访问其他 API 和资源。
如果您遵循现代 OAuth 2.1 原则,那么在使用 OpenID Connect 时应该不会出现任何安全问题。
为了确保一切安全并降低复杂性,我建议不要在 JavaScript 中处理令牌,除非你真的知道自己在做什么。
所以我试图了解各种登录(身份验证)机制,似乎有大约 3 种方法可以做到这一点,即:(如果我错了请纠正我):
- 会话(有状态)
- JWT(无状态和有状态)
- OpenID 连接
这篇博客 post ( Stop using JWTs for web sessions ) 涵盖了 JWT 在使用 JWT 维护会话的上下文中的许多缺点。当我读到 OpenID Connect 时,发现他们使用 JWT 令牌作为 ID 令牌来验证用户身份。博客 post 描述了 XSS 攻击、恶意 javascript 代码窃取令牌(和令牌信息)等缺点。
那么,OpenID Connect 如何确保其身份验证和会话维护是安全的?
此外,如果 JWT 被用作“短期一次性使用令牌”,那么如何让用户保持登录状态而不提示他们在每隔几次后重新登录minutes/hours?
通常,在使用 OpenID Connect 登录后,访问权限和 ID-token 会返回到后端客户端。 ID-token 然后用于创建传统的会话 cookie。 ID-Token 然后被扔掉。一旦会话 cookie 建立,这就是用户保持登录状态的方式。ID-token 通常具有非常短的生命周期。访问令牌的目的是访问其他 API 和资源。
如果您遵循现代 OAuth 2.1 原则,那么在使用 OpenID Connect 时应该不会出现任何安全问题。
为了确保一切安全并降低复杂性,我建议不要在 JavaScript 中处理令牌,除非你真的知道自己在做什么。