VB_*_*VB_ 8 security openid oauth token jwt
我正在尝试系统化我对oauth + jwt + LDAP授权的了解.我已经阅读了多篇优秀文章(即这篇文章)但仍有疑问:
我的理解:

服务器端存储问题消失了.
我将尝试在这里澄清一些概念:
Oauth 和 OpenID Connect (OIDC)本身只是身份验证机制。JWT 只是在两方之间传递经过身份验证的信息的一种方式。因此,您必须努力分离关注点。当对如何识别用户并确保确实是他/她有疑问时,请检查凭据等......去检查 OIDC 或 Oauth 标准。如果对如何在各方之间安全地传递用户相关信息有疑问,请查看 JWT RFC 和相关内容(JWS、JWK、JWE 和相关内容)。
话虽如此:
完全正确。你理解正确。
这取决于实现,但是存在一些有状态的方法,并且一些实现是无状态的。使用 JWT 的服务器(Oauth 术语中的资源服务器)可能在缓存或预配置的. 这样,它就可以验证来自 IdMS 的 JWT 访问令牌,而无需执行任何请求。IdMS 可能会关闭,但不会影响系统。对于某些 VPN 背后有 IdMS 且其外部有资源服务器的架构来说,情况正是如此。除此之外,可能有一种更有状态的方法来根据IdMS 的内省端点检查访问令牌。通过这种方式,对于资源服务器上所需的每次验证,都会向 IdMS 发出请求以检查访问令牌是否仍然有效并提取相关声明。当访问令牌不是 JWT 因此不透明时,也会使用后一种机制。
黑名单可能是一种方法,但更常见的是通过刷新令牌机制来完成。您为访问令牌指定了非常短的生命周期,例如 1 分钟,然后依靠刷新机制在会话被撤销时失败。
从技术上讲,OpenID和OpenID Connect (OIDC)是不同的东西。简而言之,我们可以说 OpenID 是身份联合的一种旧实现,并未得到广泛采用。OpenID Connect 是Oauth 2.0 的演变,添加了 JWT、ID Token 和其他一些细节。但不,JWT 和 OIDC 绝不是排他性的实现。确实,OIDC 暗示强制使用 JWT,但 JWT 存在于 OIDC 之外。
如果您想在两个服务器之间授权请求,在基本级别上,可以使用简单的令牌来完成(只需保持它们的秘密,并使用 TLS)。但使用 JWT 后,服务器可以信任中央 IdMS,而不必完全信任彼此。在您指出的这种情况下使用 Oauth,因为例如 Google 信任自己和用户,但不信任您的服务器。因此,身份验证发生在充当 IdMS 的 Google 和用户之间,这会生成一个 JWT(并非总是如此,因此您可以看到我之前声明的情况),您的服务器(信任外部 IdMS)可以使用该 JWT 与 Google 进行通信。
如前所述,组/角色管理独立于使用的 JWT/令牌。JWT/普通令牌只是传递身份验证信息的方式。
Oauth/OIDC 上的 LDAP 处于身份验证阶段。当用户将其凭据发送到 IdMS 而不是根据本地数据库进行检查时,将根据 LDAP 检查凭据。一些高级 IdMS 也可以使用 LDAP 来检索策略、组或其他权限。但授权完成后,其余过程与往常一样。
参考:
| 归档时间: |
|
| 查看次数: |
2314 次 |
| 最近记录: |