0

我正在尝试创建一个单点登录系统,其中在未加入任何域的 DMZ 中的 Tomcat 服务器上运行的应用程序能够针对多个域进行身份验证,同时仍使用其 Windows 凭据自动记录用户。

关键要求:

  • 必须支持多个域
  • 如果用户位于受支持的域中,则不得提示用户输入凭据
  • Web 服务器不能在域上
  • Web 服务器位于 DMZ
  • 必须支持Tomcat 6

这甚至可能吗?如果可以,是否有任何类型的框架支持这样做?我查看了 JOSSO、Shibboleth 和 OpenAM,但它们似乎都没有满足所有五个要求。

JCIFS NtlmHttpFilter看起来正是我正在寻找的东西,不幸的是它已被弃用并且不再推荐。


Visio 图表供参考。 在此处输入图像描述

4

2 回答 2

1

杰斯帕可以做到这一点。如果域具有信任,则默认的 Jespa HttpSecurityFilter 将起作用。不过,您必须在防火墙上戳一个洞,让 Jespa 与目标 DC 上的 TCP 端口 445 通信。您可能希望创建一个 DNS 记录文件(请参阅 Jespa 操作员手册)以绕过 DNS,并且仍然让 Jespa 使用多个域控制器。

如果域没有信任,您实际上仍然可以这样做。但是您必须编写一些代码来设置 cookie,然后查找几个 jespa.http.HttpSecurityService 实例之一(每个域一个)来调用 doFilter。这意味着您将编写一个小请求路由器来选择正确的域。如需更详细的解释,请咨询 IOPLEX 支持。

但是请注意,如果客户端实际上并未加入域,那么无论您使用什么软件或协议,理论上都无法实现真正​​的单点登录。您将不得不使用像 OpenID 或 CAS 这样的“辅助”或“双重登录”风格的协议,在这些协议中您会被重定向到某个登录页面。然后,客户端可以进入参与该“SSO”方案的任意数量的站点,而无需再次提供凭据(至少对于会话的剩余时间)。

于 2013-11-13T04:21:17.493 回答
0

没有办法绕过需要域访问权限的 Kerberos。NTLM 是没有选择的,因为它是专有的,不希望找到完整的 OSS 实现。只有杰斯帕

于 2013-08-03T10:05:55.423 回答