【问题标题】:Given that OpenID Connect uses JWTs for Authentication, how is the safety ensured?鉴于 OpenID Connect 使用 JWT 进行身份验证,如何确保安全?
【发布时间】:2020-12-25 09:39:39
【问题描述】:

所以我试图了解各种登录(身份验证)机制,似乎有大约 3 种方法可以做到这一点:(如果我错了,请纠正我):

  • 会话(有状态)
  • JWT(无状态和有状态)
  • OpenID 连接

这篇博文 (Stop using JWTs for web sessions) 涵盖了 JWT 在使用 JWT 维护会话方面的许多缺点。当我阅读 OpenID Connect 时,发现他们使用 JWT Tokens for ID Tokens 来验证用户身份。该博客文章描述了 XSS 攻击、恶意 javascript 代码窃取令牌(和令牌信息)等缺点。

那么,OpenID Connect 如何确保其身份验证和会话维护安全?

此外,如果 JWT 被用作“短暂的一次性使用令牌”,那么如何让用户保持登录状态而不提示他们每隔几分钟/小时重新登录一次?

【问题讨论】:

  • 我的回答对您有帮助吗?或者你想让我在我的答案中添加一些东西吗?否则,如果您愿意,请随时接受我的回答。

标签: jwt openid-connect


【解决方案1】:

通常,在使用 OpenID Connect 登录后,一个访问权限和 ID-token 会返回给后端客户端。然后使用 ID 令牌创建传统的会话 cookie。 ID-Token 然后被丢弃。建立会话 cookie 后,这就是用户保持登录的方式。ID 令牌的生命周期通常很短。访问令牌的目的是访问其他 API 和资源。

如果您遵循现代 OAuth 2.1 原则,则在使用 OpenID Connect 时应该不会出现任何安全问题。

为了保证一切安全并降低复杂性,我建议不要在 JavaScript 中处理令牌,除非你真的知道自己在做什么。

【讨论】:

    猜你喜欢
    • 2018-11-29
    • 2016-11-27
    • 2021-07-29
    • 2018-04-12
    • 2018-01-01
    • 1970-01-01
    • 2019-12-16
    • 2015-09-02
    • 2017-01-01
    相关资源
    最近更新 更多