Java/VNC中的单点登录

Joh*_*ica 9 java vnc kerberos gssapi single-sign-on

背景

在我工作的项目上,我们在几个不同的服务器上运行GUI应用程序.由于他们的用户界面相似,我正在研究将他们的OMI组合成一个统一的界面.目前,这些应用程序都可以通过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代码放入客户端,但这是5星级的难度,我需要1星或2星.

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

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

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

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

Dan*_*iel 2

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

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

编辑:更多考虑因素:

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