gpt4 book ai didi

security - OpenID Connect 与无状态 JWT token

转载 作者:行者123 更新时间:2023-12-02 19:43:43 26 4
gpt4 key购买 nike

我想将自托管 OpenID Connect (OIDC) 服务器与 JWT 结合使用作为授权 token (OIDC 术语中的访问 token )。 JWT 将用于保护 REST 服务,而 UI 是经典应用程序和单页应用程序(Angular)的混合。这样,REST 层就能够基于无状态 JWT token 进行授权,因此不需要额外的数据库连接,如下所述:

https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/

对于单页应用程序,OIDC 隐式流比较合适。但是,当隐式流与无状态 JWT token 结合使用时,我发现了一个安全问题: token 作为 URL 中的片段部分进行传递,这意味着无法删除它们(它们很容易在浏览器历史记录中可用),也无法使其失效他们(他们是无状态的)-> 不可能注销。

我看到有两个选项可以缓解这个问题:

  1. 使用非常短暂的 token (最多几分钟)。这可能会极大地影响可用性。
  2. 通过 AJAX 方式使用授权代码流。这不符合 OIDC,但可能会导致注销,因为 token 不会在 URL 中公开。

第三种选择是放弃无状态 JWT token 并使用带有数据库检查的简单不记名 token 。

我错过了什么吗?你会选择什么?

最佳答案

人们可能会争论片段最终出现在浏览器历史记录中的风险,但“简单”的不透明承载 token 将受到您为 JWT token 描述的相同限制

OpenID Connect 规范当然不会阻止使用 AJAX 代码流,因此您可以直接使用它;隐式流程只是浏览器内客户端的建议,因为它优化了向用户代理获取 token 的往返次数

关于security - OpenID Connect 与无状态 JWT token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27355808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com