gpt4 book ai didi

security - LDAP JWT OAuth 方案说明

转载 作者:行者123 更新时间:2023-12-03 15:50:21 26 4
gpt4 key购买 nike

我正在尝试系统化我对 oauth + jwt + LDAP 授权的了解。我已经阅读了多篇优秀的文章(即 this ),但对此仍有疑问:
我的理解:

  • JWT 是一种允许单点登录 (SSO) 的 token 。它比简单的 token 认证更安全,因为它加密了所有用户特定的信息(例如用户名、密码、clientAppId、IP 地址等)。此信息使用内部授权服务器 key 签名,攻击者无法更改。
    enter image description here
  • 来自 here ,请看下面的短语。据我了解,这意味着每个 HTTP 前端服务器都不需要查找 session 数据。但它需要查找权限服务器。 有什么好处?这不是同一个单点故障吗?为什么 JWT 被认为是无状态的? JWT 仍然需要将用户数据保存在权限服务器上,对吧?

    The server side storage issues are gone.


  • 如果您需要在到期前使​​用 JWT 注销用户 - 您需要保留黑名单。 那么没有 SSO 的简单 token uath 有什么好处呢?
  • JWT 是 OpenID 的实现(仅限身份验证)吗?
  • 在没有 OAuth 的情况下,使用 JWT( token )对 server-2-server 进行自动登录是不可能的。当您不想在没有用户参与的情况下代表用户授权来自某些服务的请求时,使用 Oauth。 为什么 token 不可能,而 OAuth 可能?
  • OAuth 还用于配置灵活的访问策略,如角色、组等。但是为什么不能基于 token /JWT 自己实现呢?
  • LDAP 服务器对于小型非互连数据的读取操作非常快,例如用户凭据。 jwt-oauth 方案(或 OppenID Connect)中的 LDAP 在哪里? LDAP 是用于身份验证 (JWT) 还是授权 (OAuth)?
  • 最佳答案

    我将尝试在这里澄清一些概念:
    Oauth 和 OpenID Connect (OIDC) 只是 身份验证机制 通过他们自己。 JWT 只是在两方之间传递经过身份验证的信息的一种方式。因此,您必须努力分离关注点。当对如何识别用户有疑问并确保它真的是他/她时,请检查凭据等等……去检查 OIDC 或 Oauth 标准。如果对如何在各方之间安全地传递用户相关信息有疑问,请查看 JWT RFC 和相关(JWS、JWK、JWE 和相关)。
    说了这么多:

  • 完全正确。你理解正确。
  • 它取决于实现,但存在一些有状态的方法,也有一些实现是无状态的。消费 JWT 的服务器(Oauth 术语中的资源服务器),可能有 IdMS(Oauth 术语中的授权服务器(错误命名))缓存中的签名 key ,或预先配置 .这样,它可以验证来自 IdMS 的 JWT 访问 token ,而无需执行任何请求。 IdMS 可以在不影响系统的情况下关闭。对于某些在某些 VPN 后面具有 IdMS 以及在其外部的资源服务器的架构,情况正是如此。除此之外,还有一种更有状态的方式来检查访问 token 与 自省(introspection)端点 IdMS 的。通过这种方式,对于资源服务器上所需的每个验证,将向 IdMS 发出请求以检查访问 token 是否仍然有效并提取相关声明。当访问 token 不是 JWT 并因此不透明时,也使用后一种机制。
  • 黑名单可能是一种方法,但通常通过刷新 token 机制来完成。你给访问 token 一个非常短的生命周期,比如 1 分钟,然后依靠刷新机制来失败,以防 session 被撤销。
  • 从技术上讲开放ID OpenID 连接 (OIDC) 是不同的野兽。简而言之,我们可以说 OpenID 是一种旧的身份联合实现,并未得到广泛采用。 OpenID Connect 是 Oauth 2.0 的演变,增加了 JWT、ID token 和其他一些细节。但是不,JWT 和 OIDC 绝不是排他性的实现。确实,OIDC 强行暗示使用 JWT,但 JWT 存在于 OIDC 之外。
  • 如果您想在两个服务器之间授权请求,在基本级别上,可以使用简单的 token 来完成(只需将它们保密,并使用 TLS)。但是使用 JWT 启用的是服务器可以信任中央 IdMS,而不必完全相互信任。在您指出的这种情况下使用 Oauth,因为例如 Google 信任他自己和用户,而不是您的服务器。因此,身份验证发生在充当 IdMS 和用户的 Google 之间,这会生成一个 JWT(并非总是如此,因此您会看到我之前声明的情况),您的服务器(信任外部 IdMS)可以使用该 JWT 与 Google 进行通信.
  • 如前所述,组/角色管理独立于使用的 JWT/ token 。 JWT/plain token 只是传递身份验证信息的方式。
  • Oauth/OIDC 上的 LDAP 处于身份验证阶段。当用户将其凭据发送到 IdMS 而不是检查本地数据库时,会根据 LDAP 检查凭据。一些高级 IdMS 也可以使用 LDAP 来检索策略、组或其他权限。但是当授权完成后,其余的过程和往常一样。

  • 引用:
  • https://openid.net/connect/
  • https://es.wikipedia.org/wiki/OpenID
  • https://www.rfc-editor.org/rfc/rfc7519#section-1
  • 关于security - LDAP JWT OAuth 方案说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41015340/

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