9

背景

在我从事的项目中,我们在几个不同的服务器上运行 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 服务器并导出客户端应用程序窗口?

是的,这会很棒。这可以用已经运行的应用程序完成吗?我必须在它们已经启动后连接到这些应用程序。当有人启动中央查看器时,我无法按需启动它们。

4

2 回答 2

3

RealVNC 企业版支持 AD 身份验证(每个导出的桌面约 50 美元)。也许您可以简单地让人们以这种方式进入应用程序。FreeNX支持 PAM 身份验证,因此您可能可以与 winbind 一起破解某些东西,特别是如果您的 linux dist 使 AD 设置变得容易。

最后一件事是在VirtualBox中运行您的应用程序,它可以通过 RDP在无头模式下运行。您可以针对 PAM 进行身份验证,从而进行 winbind。这还具有通过预先安装或可用于 Windows 的远程桌面在客户端对 Windows 友好的优势。

于 2011-01-29T16:53:55.720 回答
2

好的,我将尝试启动此列表。你有没有考虑过...

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

编辑:更多注意事项:

  • 使用 X Server 变体时,使用Xmove将程序移动到 X Server。
  • 您可以使用带有私钥/秘密密钥的 SSH 身份验证,并让用户输入一个密码来连接您的所有服务器。SSH 代理是关键字。
  • 使用现有的 SSH 连接,在所有机器上启动 XMove,收集所有 GUI 并将它们发送到客户端。你甚至可以编写一个小主窗口,每个应用程序都有按钮,点击后,只导出一个应用程序,所以它们看起来像是从主 GUI 启动的。
于 2011-01-21T19:28:39.403 回答