在Java/VNC中的单点登录

9

背景

我工作的项目在几个不同的服务器上运行GUI应用程序。由于它们的用户界面相似性,我正在研究将它们的OMIs合并为单个统一界面。目前,这些应用程序都可以通过VNC进行远程查看。我计划利用这一点,在主显示器下运行多个VNC查看器,并在这些VNC会话周围包装一个接口,使它们看起来像本地应用程序。

问题

我正在寻找构建单个登录解决方案的指针。我想消除每个应用程序各自的登录,并改为仅让用户登录到统一的显示器中。当他们这样做时,他们将自动登录到每个单独的应用程序。

约束条件

  1. 这些应用程序都是运行在Linux上的基于Swing的Java应用程序。
  2. 认证由一个带有Active Directory的Windows 2003 Server机器执行。
  3. 我更倾向于使用现成的解决方案而不是自定义的应用程序。

想法

我的调查指向了KerberosGSSAPI。 Kerberos的基于票据的机制似乎非常适合这个任务。

一个棘手的问题是这些应用程序总是在运行。我需要统一显示器以某种方式“告诉”它们用户何时登录。这不像普通的Kerberized程序,在启动时它们会执行Kerberos登录。

如果我使用Kerberos,我不确定如何将票据传输到各个应用程序服务器。有没有标准的传输方法?我只是使用“scp”之类的东西吗?还是我开发自己的基于套接字的网络协议,让Java程序相互连接并通过这种方式传递票据?

然而,我不想陷入太多细节。即使是一般性的想法,例如“您考虑过技术X吗?”或“尝试XYZ而不是VNC,它可以为您做到这一点。”,我也非常感激。


更新

我的回答和澄清在这里...

您是否考虑到仍需要进行某些身份验证,而VNC仅将视图导出给运行的程序,因此VNC会话无法传输票证?

是的,确实如此。 Java + VNC是我们现在所拥有的。如果有更好的远程查看应用程序的方法,我可以将VNC更换为其他东西。但是,不能重写应用程序。理想的解决方案是将它们分成独立的客户端和服务器部分,并将所有GUI代码放入客户端中,但这很困难,我需要1级或2级难度。

您是否考虑到两个用户同时登录的情况?他们会看到相同的应用程序吗?还是这将被禁止?

是的,我已经考虑到了。他们将看到相同的应用程序,或者这将被禁止。对于这个特定的系统来说,任何一种解决方案都可以,所以这不是一个大问题。

你考虑过在本地主机上使用X服务器并导出客户端应用程序窗口吗?

是的,这将非常好。已经运行的应用程序能否这样做?我必须在它们已经启动后连接到这些应用程序。当有人启动中央查看器时,我无法按需启动它们。


应用程序正在运行(服务器端或swing,不关心),用户打开VNC并进行登录。这样做对吗?还是用户只需打开VNC并开始使用应用程序? - Plínio Pantaleão
他们可以通过VNC连接到正在运行的应用程序,然后选择性地登录以访问超出默认设置的其他功能。 - John Kugelman
2个回答

3

RealVNC企业版支持AD身份验证(每个导出的桌面约50美元)。也许您可以让用户通过这种方式进行应用程序身份验证。FreeNX支持PAM身份验证,因此如果您的Linux发行版使AD设置变得容易,您可以尝试使用winbind来组合一些东西。

最后一件事是在VirtualBox中运行您的应用程序,它可以通过RDP以无头模式运行。您可以针对PAM进行身份验证,从而使用winbind。这也具有在客户端上通过预安装或轻松获取的Windows Remote Desktop友好的优点。


2

好的,我会尝试并开始这个列表。你有没有考虑过...

  • 使用JAAS?应该包括GSS API,但上次我尝试时非常繁琐。
  • 必须进行某些身份验证并且VNC仅将视图导出到正在运行的程序,因此VNC会话无法传输票证的事实吗?
  • 使用基于浏览器的解决方案,其中包含嵌入式Java VNC客户端?至少IE能够执行kerberos身份验证,我不知道其他浏览器是否也可以,或者IE是如何实现的。
  • 当两个用户同时登录时会怎样?他们会看到相同的应用程序吗?还是这将被禁止?
  • 只需在本地主机上使用X服务器并导出客户端应用程序窗口即可吗?

编辑:更多考虑:

  • 使用X Server变体时,请使用Xmove将程序移动到X Server中。
  • 您可以使用带有私有/秘密密钥的SSH身份验证,并让用户输入一个密码短语以连接所有服务器。 SSH代理是关键字。
  • 通过现有的SSH连接,在所有计算机上启动XMove,收集所有GUI并将它们发送到客户端。您甚至可以编写一个小的MainWindow,其中包含每个应用程序的按钮,当单击时,仅导出其中一个应用程序,因此似乎它们已从主GUI启动。

只是插入一下,推荐使用xpra而不是xmove。 - KitsuneYMG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接