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.
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.
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."
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.
Okey, ich werde versuchen, diese Liste zu starten. Hast du überlegt ...
EDIT: Weitere Überlegungen:
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.
Tags und Links java kerberos single-sign-on vnc gssapi