LDAP 非常棒。它允许您设置一组共享通用用户数据库(或更确切地说是目录)的 Web 服务,因此您可以安装 WordPress、NextCloud、MediaWiki 等,所有这些服务都允许您使用相同的用户凭据登录,只要您在其中任何一个上注册了一个帐户。您不需要自己编写任何程序;所有这些软件要么开箱即用地支持 LDAP,要么有维护良好的插件来提供它。
只有一个问题:LDAP 无法帮助不同的 Web 服务共享其登录会话 (cookie),因此当您登录到一项服务时,不会自动登录到任何其他服务。您必须使用相同的用户名和密码登录每项服务。
所以我的问题是:是否有一种像 LDAP 一样广泛使用的技术(就被各种软件支持而言)可以解决用户会话共享问题?至少 WordPress、NextCloud 和 MediaWiki 支持这种技术吗?
答案1
这是“Web 访问管理”(WAM)系统的传统空间,例如 Siteminder、Oracle Access Manager、PingAccess 等。它们为各种应用程序提供“单点登录”(SSO),并通过标头或类似方式为这些应用程序提供身份数据。
近年来,网络管理员已开始*.contoso.com
通过 cookie 在常见域(例如)内使用签名和加密的 JSON Web 令牌 (JWT)。JWT 可以是独立的,可通过签名进行验证,并且由于加密而安全。它可以与 OIDC、OAuth 刷新令牌机制结合使用,以确保需要继续访问应用程序(基于某些业务规则)等。
您提到的所有应用程序都具有可以使用 OIDC、JWT、SAML 等的机制。最终,没有人可以为您提供“灵丹妙药”,神奇地覆盖所有现有的东西 - 您会发现一些根本不适合这种身份验证的东西。通常,它是一些 12 年前最后一次更新、8 年前停产的遗留软件,没有人足够关心升级它。或者愿意为它付费。
最好的策略是弄清楚您想要 SSO 的所有事物。然后,查看这些事物的 SSO 选项。我会从 OIDC 作为主要开始,然后将标头作为辅助(您可以使用类似 mod_auth_openidc 的 Apache 将标头从 OIDC 推送到id_token
可以使用 OIDC 标头的应用程序)。这应该可以让您完成 90% 以上的工作。