背景
我工作的项目在几个不同的服务器上运行GUI应用程序。由于它们的用户界面相似性,我正在研究将它们的OMIs合并为单个统一界面。目前,这些应用程序都可以通过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代码放入客户端中,但这很困难,我需要1级或2级难度。
您是否考虑到两个用户同时登录的情况?他们会看到相同的应用程序吗?还是这将被禁止?
是的,我已经考虑到了。他们将看到相同的应用程序,或者这将被禁止。对于这个特定的系统来说,任何一种解决方案都可以,所以这不是一个大问题。
你考虑过在本地主机上使用X服务器并导出客户端应用程序窗口吗?
是的,这将非常好。已经运行的应用程序能否这样做?我必须在它们已经启动后连接到这些应用程序。当有人启动中央查看器时,我无法按需启动它们。