跨多个域的Tomcat集成Windows身份验证

问题描述 投票:0回答:2

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

关键要求:

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

这是否有可能,如果有的话,是否有某种框架可以做到这一点?我看过JOSSO,Shibboleth和OpenAM,但似乎都不满足所有五个要求。

JCIFS NtlmHttpFilter看起来与我要找的完全一样,很遗憾,它已被弃用,不再推荐使用。


Visio图以供参考。“在此处输入图像描述”

java tomcat active-directory windows-authentication
2个回答
1
投票
Jespa可以做到。如果域具有信任关系,则默认的Jespa HttpSecurityFilter将起作用。但是,您必须在防火墙上戳一个洞,以使Jespa与目标DC上的TCP端口445进行通信。您可能想要创建DNS记录文件(请参阅Jespa操作手册)以绕过DNS,并且让Jespa使用多个域控制器。

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

但是请注意,如果实际上没有将客户端加入域,则无论您使用哪种软件或协议,理论上都不可能进行真正的单点登录。您将必须使用“辅助”或“双重登录”样式的协议,例如OpenID或CAS,在该协议中您将被重定向到某个登录页面一次。然后,客户端可以进入任何数量的参与该“ SSO”方案的站点,而无需再次提供凭据(至少无论如何对于会话的其余部分而言)。


0
投票
无法绕开需要域访问的Kerberos。 NTLM并非唯一选择,因为它是专有的,并且不希望找到完整的OSS实施。只有Jespa
© www.soinside.com 2019 - 2024. All rights reserved.