Java/VNC中的单点登录 背景

Java/VNC中的单点登录 背景,java,kerberos,single-sign-on,vnc,gssapi,Java,Kerberos,Single Sign On,Vnc,Gssapi,在我工作的项目中,我们在几个不同的服务器上运行GUI应用程序。由于他们的用户界面相似,我正在研究将他们的OMI组合成一个统一的界面。目前,这些应用程序都可以通过VNC远程查看。我计划利用这一点,让主显示器在封面下运行几个VNC查看器,并围绕这些VNC会话包装一个界面,使它们看起来像本机应用程序 问题 我正在寻找设计单一登录解决方案的指针。我想消除每个应用程序的单独登录,而是让用户只登录到统一显示。当他们这样做时,他们将自动登录到每个单独的应用程序 约束条件 这些应用程序都是在Linux上运行的基

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

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

约束条件
  • 这些应用程序都是在Linux上运行的基于Swing的Java应用程序
  • 身份验证由具有Active Directory的Windows 2003服务器计算机执行
  • 与定制解决方案相比,我更喜欢现成的解决方案
  • 思想 我的调查将我指向了KerberosGSSAPI。Kerberos基于票据的机制似乎非常适合此任务

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

    如果我使用Kerberos,我不知道如何将票据传输到各种应用程序服务器。有没有标准的方法来转移他们?我是用“scp”还是什么?还是我开发自己的基于套接字的网络协议,让Java程序彼此连接并以这种方式传输票据

    不过,我不想在细节上陷得太深。我会很感激像“你有没有考虑过X技术?”或者“试试XYZ而不是VNC,它能帮你做到这一点。”


    更新 我会在这里编辑答案和澄清

    您是否考虑过无论如何都必须进行一些身份验证,并且VNC只将视图导出到正在运行的程序,因此VNC会话无法传输票证

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

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

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

    您是否考虑过只在本地主机上使用X服务器并将客户端应用程序导出到windows


    是的,这太好了。这可以通过已经运行的应用程序实现吗?我必须在这些应用程序启动后连接它们。当有人启动中央查看器时,我无法按需启动它们。

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

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

    • 使用X服务器变体时,使用将程序移动到X服务器
    • 您可以使用SSH身份验证和私钥/密钥,并允许用户输入一个密码短语来连接所有服务器。SSH代理是关键字
    • 使用现有的SSH连接,在所有机器上启动XMove,收集所有gui并将它们发送到客户端。你甚至可以编写一个小的主窗口,每个应用程序都有按钮,点击时,只导出其中一个应用程序,所以看起来它们好像是从主GUI启动的
    支持广告认证(每个导出的桌面大约50美元)。也许你可以简单地让人们通过这种方式认证应用程序。支持PAM身份验证,因此您可以使用winbind一起破解某些东西,特别是如果您的linux dist使AD设置变得容易的话


    最后一件事是运行您的应用程序,可以通过RDP在其中运行。你可以这样做,从而赢得胜利。这还有一个优点,即通过预装或随时可用于windows的远程桌面在客户端对windows友好。

    只需通过XMOVE连接到pimp xpra应用程序正在运行(服务器端或swing,不关心),用户打开vnc并启动登录。是这样吗?或者用户只是打开vnc并开始使用应用程序?他们将vnc连接到正在运行的应用程序,然后可以选择登录以访问默认功能之外的其他功能。