Einmaliges Anmelden in Java / VNC

9

Hintergrund

In dem Projekt, an dem ich arbeite, haben wir GUI-Anwendungen, die auf verschiedenen Servern laufen. Aufgrund ihrer Ähnlichkeiten zu den Benutzeroberflächen untersuche ich ihre OMIs in einer einheitlichen Oberfläche. Zur Zeit sind diese Anwendungen alle per Fernzugriff über VNC erreichbar. Ich beabsichtige, dies auszunutzen, indem ich die Master-Anzeige mehrere VNC-Viewer unter der Decke laufen lasse und eine Schnittstelle um diese VNC-Sitzungen wickle, damit sie wie native Anwendungen erscheinen.

Problem

Ich suche nach Hinweisen für die Architektur einer Single-Sign-On-Lösung. Ich möchte die individuelle Anmeldung jeder Anwendung eliminieren und sich stattdessen nur bei der einheitlichen Anzeige anmelden. Wenn sie das tun, werden sie automatisch bei jeder der einzelnen Apps angemeldet.

Einschränkungen

  1. Die Anwendungen sind alle Swing-basierten Java-Anwendungen, die unter Linux laufen.
  2. Die Authentifizierung wird von einem Windows 2003 Server-Computer mit Active Directory durchgeführt.
  3. Ich würde sehr gerne eine Standardlösung für eine maßgeschneiderte Lösung bevorzugen.

Ideen

Meine Untersuchung hat mich auf Kerberos und GSSAPI hingewiesen. Der ticketbasierte Mechanismus von Kerberos scheint für die Aufgabe gut geeignet zu sein.

Ein schwieriges Bit ist, dass diese Anwendungen immer ausgeführt werden. Ich brauche die einheitliche Anzeige, um sie irgendwie zu "erzählen", wenn sich der Benutzer angemeldet hat. Es ist nicht wie normale Kerberized-Programme, wo sie eine Kerberos-Anmeldung beim Start durchführen werden.

Wenn ich Kerberos verwende, bin ich mir nicht sicher, wie ich Tickets auf die verschiedenen Anwendungsserver übertrage. Gibt es einen Standardweg, um sie zu übertragen? Benutze ich einfach "scp" oder sowas? Oder entwickle ich mein eigenes Socket-basiertes Netzwerkprotokoll und lasse die Java-Programme miteinander verbinden und Tickets auf diese Weise übertragen?

Ich möchte mich aber nicht zu sehr in den Details verzetteln. Ich würde auch allgemeine Ideen wie "Haben Sie Technologie X in Betracht gezogen?" oder "versuchen Sie XYZ statt VNC, es tut dies für Sie."

Aktualisierungen

Ich werde in Antworten und Klarstellungen hier bearbeiten ...

  

Haben Sie in Betracht gezogen, dass eine Authentifizierung trotzdem stattfinden muss und dass VNC die Ansicht nur in ein laufendes Programm exportiert, sodass eine VNC-Sitzung keine Tickets transportieren kann?

Ja, tatsächlich. Java + VNC ist, was wir gerade haben. Ich könnte VNC für etwas anderes ändern, wenn es eine bessere Möglichkeit gibt, die Apps aus der Ferne zu betrachten. Ohne sie neu zu schreiben. Die ideale Lösung wäre, sie in verschiedene Client- und Server-Teile zu unterteilen und den gesamten GUI-Code in den Client zu integrieren, aber das ist ein 5-Sterne-Schwierigkeitsgrad und ich brauche 1- oder 2-Sterne.

  

Haben Sie den Fall in Betracht gezogen, wenn sich zwei Benutzer gleichzeitig anmelden? Werden sie die gleiche App sehen? Oder wird das verboten?

Ja, das habe ich überlegt. Sie sehen entweder die gleiche App oder es wird verboten. Beide Lösungen sind in Ordnung, so weit dieses System geht, also ist das keine große Sache.

  

Haben Sie darüber nachgedacht, einfach einen X-Server auf Ihrem lokalen Host zu verwenden und die Anwendungsfenster der Clients zu exportieren?

Ja, das wäre großartig. Kann dies mit bereits laufenden Apps geschehen? Ich muss mich nach dem Start mit diesen Apps verbinden. Ich kann sie nicht auf Nachfrage starten, wenn jemand den zentralen Betrachter anzündet.

    
John Kugelman 21.01.2011, 19:17
quelle

2 Antworten

2

Okey, ich werde versuchen, diese Liste zu starten. Hast du überlegt ...

  • JAAS? Sollte die GSS API beinhalten, war aber beim letzten Mal sehr umständlich.
  • dass eine Authentifizierung trotzdem stattfinden muss und dass VNC die Ansicht nur in ein laufendes Programm exportiert, so dass eine VNC-Sitzung keine Tickets transportieren kann?
  • eine browserbasierte Lösung mit einem eingebetteten Java VNC-Client? Zumindest ist der IE in der Lage, eine Kerberos-Authentifizierung durchzuführen, ich weiß nichts über die anderen Browser oder WIE der IE das tut.
  • Der Fall, wenn sich zwei Benutzer gleichzeitig anmelden? Werden sie die gleiche App sehen? Oder wird das verboten?
  • nur mit einem X-Server auf Ihrem lokalen Host und exportieren Sie die Client-Anwendungen Windows?

EDIT: Weitere Überlegungen:

  • Wenn Sie die X Server-Variante verwenden, verwenden Sie Xmove , um die Programme auf den X-Server zu verschieben.
  • Sie können die SSH-Authentifizierung mit privaten / geheimen Schlüsseln verwenden und den Benutzer eine Passphrase eingeben lassen, um alle Ihre Server zu verbinden. SSH-Agent ist das Schlüsselwort.
  • Starten Sie mit den vorhandenen SSH-Verbindungen XMove auf allen Computern, sammeln Sie alle GUIs und senden Sie sie an den Client. Sie könnten sogar ein kleines MainWindow schreiben, mit Buttons für jede App, und wenn Sie darauf klicken, exportieren Sie nur eine der Apps, so als ob sie von der Haupt-GUI aus gestartet wurden.
Daniel 21.01.2011, 19:28
quelle
3

RealVNC Enterprise Edition unterstützt die AD-Authentifizierung (~ 50 pro exportiertem Desktop). Vielleicht können Sie die Nutzer einfach so in die Apps einweisen lassen. FreeNX unterstützt die PAM-Authentifizierung, so dass Sie vielleicht etwas mit winbind hacken können, besonders wenn Ihr Linux-Dienst das AD-Setup vereinfacht.

Eine letzte Sache ist das Ausführen Ihrer Apps in VirtualBox , die in einer Headless-Modus über RDP. Sie können sich gegen PAM authentifizieren und somit winbind. Dies hat auch den Vorteil, dass Windows auf der Client-Seite über Remote Desktop vorinstalliert oder für Windows verfügbar ist.

    
Mark Porter 29.01.2011 16:53
quelle