我有 Windows 工作站和 Linux 服务器 - 并且我想使用 Windows-Kerberos 执行 SSO(通过 Active Directory - Windows 工作站上的所有用户都使用同一个)。
因此 - 我搜索了许多示例和方法来实现此目标:Samba、Winbind、tomcat-spengo(需要服务器进程在域上运行)、Waffle(仅在 Windows 服务器上运行)等...
我感到非常沮丧,因为我无法找到这个案例的简单教程/示例,即使它看起来像一个简单的案例。
我错过了什么?解决方案真的可能很简单吗?
谢谢。
答案1
不知道如何在 Java 中做到这一点 - 但是:有办法让 Apache 处理 SSO(MIT Kerberos 或 Winbind),并使用 HTTP 或 AJP 将 REMOTE_USER 传递给 Tomcat。这在过去对我来说很有效。
答案2
这是必要内容的粗略概述。内容可能有所不同,但它应该能为您提供一个坚实的学习起点。
LDAP 源并不重要。就您而言,它是 Active Directory。重要的是您的用户和组对象已填充正确的RFC2307 属性。RFC2307 为每个用户和组对象定义了标准 LDAP 属性,这些属性将对应于密码文件 /etc/passwd,/etc/shadow, 和/etc/组。当您的 Linux 服务器去查找用户或组时,它会假定在运行查询时这些特定属性已被填充。
根据您的发行版及其使用年限,您可能会使用nss_ldap或者nss-pam-ldapd。这些库是 PAM 将用来实际进行 LDAP 查询的内容。这些配置文件是您将指定 AD 服务器、用户/组 OU 和过滤器、属性映射(如果需要)等的地方。
最后,你需要告诉 Linux 使用 LDAP 作为其用户和组信息来源之一。这由/etc/nsswitch.conf。此文件是数据库到信息源的简单映射。就您而言,您只需将“ldap”添加到“passwd”、“shadow”和“group”数据库的列表中。
快乐黑客!