背景
在我从事的项目中,我们在几个不同的服务器上运行 GUI 应用程序。由于他们的用户界面相似,我正在研究将他们的 OMI 组合成一个统一的界面。目前,这些应用程序都可以通过 VNC 远程查看。我计划通过让主显示器在后台运行多个 VNC 查看器并围绕这些 VNC 会话包装一个界面来使它们看起来像本机应用程序,从而利用这一点。
问题
我正在寻找构建单点登录解决方案的指针。我想消除每个应用程序的单独登录,而是让用户只登录统一显示。当他们这样做时,他们将自动登录到每个单独的应用程序。
约束
- 这些应用程序都是在 Linux 上运行的基于 Swing 的 Java 应用程序。
- 身份验证由具有 Active Directory 的 Windows 2003 Server 计算机执行。
- 我更喜欢现成的解决方案而不是定制的解决方案。
想法
我的调查将我指向Kerberos和GSSAPI。Kerberos 的基于票据的机制似乎非常适合这项任务。
一个棘手的问题是这些应用程序总是在运行。当用户登录时,我需要统一显示以某种方式“告诉”他们。这与普通的 Kerberized 程序不同,他们将在启动时执行 Kerberos 登录。
如果我使用 Kerberos,我不确定如何将票证传输到各种应用程序服务器。有没有标准的方式来转移它们?我只是使用“scp”还是什么?或者我是否开发自己的基于套接字的网络协议并让 Java 程序相互连接并以这种方式传输票证?
不过,我不想太拘泥于细节。我什至会欣赏诸如“您考虑过技术 X 吗?”之类的一般性想法。或“尝试使用 XYZ 而不是 VNC,它会为您做到这一点。”
更新
我将在此处编辑答案和说明...
您是否考虑过无论如何都必须进行某些身份验证,并且 VNC 仅将视图导出到正在运行的程序,因此 VNC 会话不能传输票证?
确实是的。Java + VNC 就是我们现在所拥有的。如果有更好的远程查看应用程序的方法,我可以将 VNC 换成其他东西。不用重写它们,就是这样。理想的解决方案是将它们分成不同的客户端和服务器部分,并将所有 GUI 代码放入客户端,但这是 5 星难度,我需要 1 星或 2 星。
有没有考虑过两个用户同时登录的情况?他们会看到相同的应用程序吗?或者这会被禁止吗?
是的,我考虑过。他们要么会看到相同的应用程序,要么会被禁止。就这个特定系统而言,任何一种解决方案都可以,所以这没什么大不了的。
您是否考虑过只在本地主机上使用 X 服务器并导出客户端应用程序窗口?
是的,这会很棒。这可以用已经运行的应用程序完成吗?我必须在它们已经启动后连接到这些应用程序。当有人启动中央查看器时,我无法按需启动它们。