Java / VNC中的单点登录

时间:2011-01-21 19:17:52

标签: java kerberos single-sign-on vnc gssapi

背景

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

问题

我正在寻找构建单点登录解决方案的指针。我希望消除每个应用程序的个人登录,而只是让用户登录统一显示。当他们这样做时,他们将自动登录到每个单独的应用程序。

约束

  1. 这些应用程序都是在Linux上运行的基于Swing的Java应用程序。
  2. 身份验证由带有Active Directory的Windows 2003 Server计算机执行。
  3. 我非常喜欢现成的解决方案,而不是定制的解决方案。
  4. 我的调查指向了 Kerberos GSSAPI 。 Kerberos的基于票证的机制似乎非常适合这项任务。

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

    如果我使用Kerberos,我不知道如何将票证转移到各种应用程序服务器。有转移它们的标准方法吗?我只是使用“scp”或其他东西吗?或者我是否开发自己的基于套接字的网络协议,让Java程序相互连接并以这种方式转移票证?

    但是,我不想让细节陷入困境。我甚至欣赏一般的想法,比如“你考虑过X技术?”或者“尝试XYZ而不是VNC,它会为你做这件事。”


    更新

    我会在这里编辑答案和说明......

      

    您是否认为必须进行某些身份验证并且VNC仅将视图导出到正在运行的程序,因此VNC会话无法传输票证?

    是的,的确如此。 Java + VNC就是我们现在所拥有的。如果有更好的远程查看应用程序的方法,我可以更换VNC。没有重写它们,就是这样。理想的解决方案是将它们分成不同的客户端和服务器部分,并将所有GUI代码放入客户端,但这是5星级难度,我需要1星或2星。

      

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

    是的,我考虑过了。他们要么看到相同的应用程序,要么将被禁止。对于这个特定的系统来说,这两种解决方案都没问题,所以这不是什么大问题。

      

    您是否考虑过在本地主机上使用X Server并导出客户端应用程序窗口?

    是的,这会很棒。这可以通过已经运行的应用程序完成吗?我们必须在这些应用程序启动后连接这些应用程序。当某人激活中央观众时,我无法按需启动它们。

2 个答案:

答案 0 :(得分:3)

RealVNC Enterprise Edition支持AD身份验证(每台导出桌面约50美元)。也许你可以简单地让人们以这种方式进入应用程序。 FreeNX支持PAM身份验证,因此您可能会与winbind一起破解某些内容,尤其是当您的linux dist使AD设置变得容易时。

最后一件事是在VirtualBox中运行您的应用,可以通过RDP在{{​​3}}内运行。你可以headless mode从而赢得胜利。这也具有通过远程桌面在客户端进行窗户友好的优点,远程桌面已预先安装或可随时用于Windows。

答案 1 :(得分:2)

哦,我会尝试开始这个列表。你考虑过......

  • JAAS?应该包括GSS API,但上次我尝试时非常麻烦。
  • 无论如何必须进行一些身份验证,而且VNC只将视图导出到正在运行的程序,因此VNC会话无法传输票证?
  • 基于浏览器的解决方案,内置Java VNC客户端?至少IE能够执行kerberos身份验证,我不知道其他浏览器,或IE如何做到这一点。
  • 两个用户同时登录的情况?他们会看到相同的应用程序吗?或者这会被禁止吗?
  • 只在本地主机上使用X Server并导出客户端应用程序窗口?

编辑:更多注意事项:

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