Single Sign On in Java Implementieren

Thallius

Top Contributor
Hi,

ich mus jetzt meine Java App mit unserem Firmen Loin verknüpfen.

Im Prnzip ist das nicht so schwer. Ganz trivial gesagt fragt man einfach über einen HTTPS Request an ob der User mit der ID schon angemeldet ist oder nicht. Ist er es, dann kann ich einfach ensprechenden Zugriff geben oder auch nicht (Je nach Berechtigung in meiner Userrights Tabelle).

Ist er es aber nicht, so muss man ihn ja dazu auffordern sich anzumelden. Das geht aber nur über einen Browser. Also dachte ich ich mache einfach einen JavaFX WebView auf und verlinke diesen auf die Login Page unseres SSO Logins.

Bis hierhin alles kein Problem. Das Problem fängt jetzt an. Eigentlich müßte ich mich ja nun in dem Moment wo der Login abgeschickt wird und der Login geklappt hat, sprich der User zur ersten Seite nach dem Login redirekted wird, mich wieder dort "einklinken", das Webview schliessen und entsprechend meiner Software sagen "Ok der drarf jetzt rein".

Aber dazu fehlt mir im Moment noch jeglicher Ansatz.

Habt Ihr das schon einmal gemacht oder sonst gute Anregungen?

Gruß

Claus
 
Grundsätzlich denke ich, du müsstest im WebView die Cookies oder so abfangen (und vermutlich die redirects), damit du an das finale Credential rankommst. Ab da sollte es easy sein: Du müsstest dieses Credential bei jedem Request an den Server mitschicken. Wenn dann ein Fehler kommt (k.A. was für einer), der signalisiert, dass du wieder einloggen ist, wieder zur WebView-Prozedur springen...
Aber ich kenn mich damit tatsächlich zu wenig aus, um ein wirklich gutes Bsp. geben zu können.

Der Link von @Dukel beschreibt den Weg, den man mit Standard-Java-Mitteln gehen kann, um eine Kerberos-Authentisierung zu verwenden.
 
Grundsätzlich denke ich, du müsstest im WebView die Cookies oder so abfangen (und vermutlich die redirects), damit du an das finale Credential rankommst. Ab da sollte es easy sein: Du müsstest dieses Credential bei jedem Request an den Server mitschicken. Wenn dann ein Fehler kommt (k.A. was für einer), der signalisiert, dass du wieder einloggen ist, wieder zur WebView-Prozedur springen...
Aber ich kenn mich damit tatsächlich zu wenig aus, um ein wirklich gutes Bsp. geben zu können.

Der Link von @Dukel beschreibt den Weg, den man mit Standard-Java-Mitteln gehen kann, um eine Kerberos-Authentisierung zu verwenden.

Ich brauche ja nur beim Start meiner App einmal die Info ob der User eingeloggt ist oder nicht. Danach bleibt er solange drin wie die App läuft. Ich brauche die Credentials also eigentlich gar nicht. Von daher sollte es ja nicht so schwer sein. Ich muss feststellen, wenn der redirekt kommt. Aber wie macht man das? Ich habe weder mit JavaFX noch mit dem WebView jemals vorher was gemacht.

Gruß

Claus
 
Hm. Ich denke, du musst das irgendwie mit der WebEngine (gibt einen Getter dafür im WebView) regeln. Dort kannst du darauf hören, wann die Seite fertig geladen ist und dann Listener im DOM selbst registrieren.
http://stackoverflow.com/questions/17555937/hyperlinklistener-in-javafx-webengine

Wahrscheinlich aber musst du erst einmal auf die Location-Property hören, denn ich denke, hier wird etwas dank der Redirekts passieren.

Cookies solltest du in etwas so hier behandeln:
http://stackoverflow.com/questions/14385233/setting-a-cookie-using-javafxs-webengine-webview

Einfach mal drauf los experiementieren...
 

Neue Themen


Zurück
Oben