Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Inhalt
maxLevel2

Definition

Menüaufruf: (Administration) - (SSO Konfiguration) 

Nuclos ab Version 4.45 Nuclos  unterstützt die Authentifizierung mittels OAuth2 und OpenID Connect (OIDC), und setzt dabei auf den Authorization Code Grant.

Client-Login

Aktive Dienste werden den Endbenutzern zur Authentifizierung beim Starten eines Clients angeboten.

Rich-Client

 

Image Modified

Der Rich-Client verwendet den Webclient mit. Der Login Button, in diesem Beispiel "Login with local Hydra", öffnet also den Browser und leitet den Benutzer durch den Authentifizierungsprozess, falls noch keine Sitzung vorliegt. Im Anschluss wird der Nuclos Webclient geöffnet und autorisiert durch diesen letzten Schritt auch den Rich-Client. Dieser startet in Folge dessen und der Webclient zeigt eine Bestätigung.

Image Modified

Webclient

Image Removed

Auch in diesem Beispiel wird mit dem Login Button "Login with local Hydra" der Authentifizierungsprozess gestartet.

Image Added

Konfiguration

Die Konfiguration der zur Verfügung stehenden SSO Dienste erfolgt innerhalb eines Clients, zu finden im Menü Administration.

 

Image ModifiedImage Modified

Callback to Nuclos Webclient

Für die Callback URL zum Nuclos Webclient ist immer der ROOT Pfad des Webclients anzugeben, mit der ein Browser eines Endbenutzers den Webclient auch tatsächlich erreichen kann. Sollte z.B. ein Load Balancer zum Einsatz kommen, oder ein Reverse Proxy o.ä. ist das zu berücksichtigen. Für eine typische Installation mit dem Nuclos Installer wäre es z.B. https://my-nuclos-server.example/webclient



OAuth2 Konfiguration

Die nötigen Einstellungen sollte Ihnen Ihr SSO Anbieter nennen können. Nicht immer sind alle Felder zu füllen. Zum testen der Einstellungen kann ein "Debug" eingeschaltet werden, womit Log Ausgaben zum SSO Authentifizierungsversuch vom Nuclos Server im server.log ausgegeben werden

. Codeblock
titleLogausgaben
Debug SSO auth for session 6AA27CA6F13BC4958CAD32EE806A2051: ClaimsSet {"sub":"foo@bar.com","sid":"1bddcca8-bfbc-487c-a9d6-80f60e7e658d"} received Debug SSO auth for session 6AA27CA6F13BC4958CAD32EE806A2051: ClaimsSet does not contain any value for the configured email claim: subs SSO auth failed for session 6AA27CA6F13BC4958CAD32EE806A2051 Exception: "Nuclos user not found" ... SSO auth failed for session 5B4EE29DBE7A1ED10F7DBA9E847CA149 Exception: "Not Found (404) during userinfo request against "http://eth0:9000/userinfos"" ... SSO auth failed for session 5B4EE29DBE7A1ED10F7DBA9E847CA149 Exception: "Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method) (401 invalid_client) during token request against "http://eth0:9000/oauth2/token"" ... Debug SSO auth for session EBF3F0FA001C77FE8CA76DA63DB24878: Id token eyJhbGciOiJSUzI1NiIsImtpZCI6InB1YmxpYzo4ZmYxNWMzNS1kY2NkLTRmYjEtYjg2Ny1iNzE0NTdiZTM5YzEiLCJ0eXAiOiJKV1QifQ.eyJhdF9oYXNoIjoiZjFhRGYtdTItWDRiSHphT3VjVlBWUSIsImF1ZCI6WyJudWNsb3MiXSwiYXV0aF90aW1lIjoxNjEwNjMyMTc5LCJleHAiOjE2MTA2MzU3ODMsImlhdCI6MTYxMDYzMjE4MywiaXNzIjoiaHR0cDovL2V0aDA6OTAwMC8iLCJqdGkiOiIwYzU5OWUyYy1hMmEyLTQxN2YtYmVhYy00ODE5OTM0NGQxN2YiLCJub25jZSI6IiIsInJhdCI6MTYxMDYzMjE3Niwic2lkIjoiOTIxZjgxZDQtODExOS00NTMzLTk2OGYtNWU5Nzc1NDYxZTk1Iiwic3ViIjoiZm9vQGJhci5jb20ifQ

.

aA87Uq3VDsoKS3guvs0bq6iuHMSUwu4dTP4VggYMeVJZS02KloVCX6Vg9DREZODoMYrrAyqx5unLgSRtfwDGPVsQbgvmvkUArCAb6SIXZvaojbuv5eCBfNb1GV19w3dPM3LuY1mO48UXE5K5tGzmlWwdc3gNxpGdbdaTFXoNp7DecI95OrRFjk2-xm6HCkT_l_TcH1uxRfGsCU46YjTE_bBx4VH8d1tIF496RsXvaIhUjO8m8KdK-fO-STWAzRHHevK0OHt8nngabxceatD6VUQsSGWJmcgqTJjkFQnnnccfQkei2wK_X8XO_ncc4pxgfPgX_mctg4tCFcJ3aVHrcQzqdx7TUvyOVD0SZHaCI6ypTAppauSpCuBypAxHj4YGawFEFZQrmO3W1HcIoYYWTuVXRIJCxG-ptNMTPPW_JXrZLFDjsI0MExiEAdReYIdWMfp8DupnbbqBFdGQeqkBNym7VjdNfng0JmFeWh0OogBdCfG2dvI6w97Tko3mJZ-g_8hxLhExguDX9pQ0wZoRjj5-EsfHPUUOOcsRJFxje2vXed3itu5YzmiS31GaJIc3hKs-3fwm1H9MR7GUkgma1aSceRHhKIIL8N-vNalwIlzDYz7rJHLbweGjSjJkld0zs6gx05gPbyan0gCkyOOBhW2-As_BVZGibtCymw9TIeo received, try to validate... Debug SSO auth for session EBF3F0FA001C77FE8CA76DA63DB24878: OidcIdTokenJwkSet not configured, try HMAC with client secret SSO auth failed for session EBF3F0FA001C77FE8CA76DA63DB24878 [Exception "Signed JWT rejected: Another algorithm expected, or no matching key(s) found"]: Error during id token validation



OIDC Abfrage der Benutzerinformationen

Die Ermittlung der Benutzerinformationen über OIDC erfolgt entweder über ein ID Token oder einen Userinfo Endpunkt (weiterer Request). Ein ID Token bietet in der Regel mehr Sicherheit und wird daher vorrangig verwendet. Hierzu müssen im Reiter ID token assertion die nötigen Einstellungen erfasst werden. Fehlt die "Issuer" Einstellung oder wird kein ID Token geliefert, so wird der unter Userinfo assertion konfigurierte Endpunkt zur Ermittlung des Benutzers angefragt.

In beiden Fällen erhalten wir ein ClaimsSet (Beispiel aus dem Log: {"sub":"

foo@bar

foo@bar.com","sid":"1bddcca8-bfbc-487c-a9d6-80f60e7e658d"}) in dem entweder die E-Mail Adresse oder der Benutername des Nuclos Benutzers enthalten sein muss, um die Authentifizierung Nuclos-seitig abzuschließen. Um die Ermittlung möglichst flexibel zu gestalten kann im Reiter Nuclos user mapping das Attribut des ClaimsSets hinterlegt werden. Die Suche über die E-Mail erfolgt zu erst, bleibt diese erfolglos wird noch eine Suche über den Benutzernamen versucht, falls konfiguriert. Eines von beidem muss also zwingend konfiguriert sein.

Image Removed

Info
titleEmail Suche

Achtung, für eine erfolgreiche Ermittlung über die E-Mail Adresse ist das Flag Login mit E-Mail Adresse zulassen am Benutzer eine Voraussetzung!

Hintergrundinformationen


Image Added

 Hintergrundinformationen

Requests & Sitzungsdauer

Der OAuth2 Dienst wird zusätzlich zur anfänglichen Authentifizierung auch zur Erneurung der Refresh Tokens in regelmäßigen Abständen (bei Ablauf eines Tokens) angefragt, sofern vom Dienst bei der Anmeldung mitgeliefert. Werden keine geliefert, oder ist die Erneurung erfolglos wird der Benutzer ausgeloggt. Ein Richclient schließt sich nach Meldung der abgelaufenen Sitzung komplett. Da so womöglich ungespeicherte Änderungen verloren gehen, sollte möglichst der OAuth2 Dienst Refresh Tokens zur Verfügung stellen.

Für unseren Nuclos Server ist auch weiterhin die JSESSIONID (Cookie) ausschlaggebend und wird bei jedem Request geprüft. Ein OAuth2 Dienst wird damit möglichst wenig beansprucht.


Logout

Ein Logout in Nuclos hat bisher noch keine Auswirkungen auf den OAuth2 Dienst, wird also (noch) nicht weitergeleitet, es wird lediglich die Nuclos Sitzung beendet. Auch wirkt sich ein Logout im OAuth2 Dienst noch nicht direkt auf eine Nuclos Sitzung aus. Nur indirekt, da zu erwarten ist, dass ein Refresh Token nicht erneuert werden kann.

Sticky Sessions (Clustering)

Ein Clustering von Nuclos Application Servern setzt zwangsläufig Sticky Sessions vorraus, da es für eine Sitzung Informationen geben kann, die nur am Application Server abgelegt und nicht unter den Servern ausgetauscht werden. SSO relevante Informationen (Tokens etc.) gehören auch dazu.


Zwei-Faktor Authentifizierung (2-FA) 

Anker
2FA
2FA

Parameter acr_values

In vielen Systemen lässt sich mit dem Parameter "acr_values" konfigurieren, welche Möglichkeiten zum Anmeldung erlaubt sind. Daher gibt es ab Nuclos 4.2022.36 in der SSO Konfiguration ein neues Feld "Acr Values":

Image Removed

Im Screenshot wird durch "strongAuth4000Service" eine 2-FA Authentifizierung erzwungen. Dieser einzutragende Wert ist von System zu System unterschiedlich.

Image Added

Parameter Auth Level

Ab 4.2022.38 kann ein numerischer Wert angegeben werden, der dazu dienen, bestehende Authentifizierung zu überprüfen, ob sie "hoch" genug sind. Damit das überhaupt funktionieren kann, muss der SSO-Server eine bestimmte Response mit Wert zurückgeben. Falls der Wert zu niedrig ist oder die Syntax nicht genau den Erwartungen erfüllt, scheitert die Überprüfung.
Die Implementierung zu "Auth Level" befindet sich noch Beta-Stadium und wird für viele System nicht funktionieren. Daher sollte hier nichts eingetragen werden, wenn man nicht die Kompatibilität kennt und/oder es Probleme gibt.