Umstellung auf ActiveDirectory
ActiveDirectory - Einleitung
Die vorliegende Dokumentation beschreibt die Vorgehensweise der Umstellung auf ActiveDirectory SSO einer Nexus Schweiz .NET Anwendung basierend auf SIS+ Framework V-6.2.0.0 (Stand Mai 2019) oder höher.
Management Summery – Das Konzept in wenigen Sätzen.
Davon ausgehend, dass der Systemadministrator einer Unternehmung applikatorische Benutzer Zugriffs-Rechte über die ActiveDirectory Gruppen verwalten möchte, wurde das AD SSO – Integration Konzept der Nexus .NET-Applikationen möglichst konsequent darauf ausgerichtet.
Die verbindenden Elemente beider Systeme (AD und Nexus .NET-Applikation) sind die AD-Gruppen und die .NET Rollen. Die Verbindung erfolgt über die .NET-Administration AD-Gruppen-Rollen-Zuordnungen, über welche gleichzeitig auch bestimmt wird, welche .NET-Rolle auf welchen .NET-Mandant Zugriff haben soll. Einmal grundlegend eingerichtet, ist für rollenbasierte Zugriffsrechte nichts weiter mehr in der .NET-Applikation zu administrieren:
- Startet ein neuer AD-Benutzer mit Mitgliedschaft einer oder mehreren AD-Gruppen, für welche AD-Gruppen-Rollen-Zuordnungen existieren, wird für den AD-Benutzer automatisch ein .NET-Benutzer angelegt und die .NET-Zugriffsrechte entsprechend den AD-Gruppen-Rollen-Zuordnungen ebenso automatisch angelegt. Der AD-Benutzer merkt davon allerdings nichts: Die .NET-Anwendung wird für Ihn einfach ohne Eingabe von Benutzerkennung und Passwort (SSO) starten.
- Änderungen an AD-Gruppen-Mitgliedschaften mit AD-Gruppen-Rollen-Zuordnungen werden bei jeder weiteren Anmeldung an der .NET-Applikation automatisch aktualisiert. Aber nur, sofern dies so gewünscht und eingestellt ist (siehe Systemoptionen/Loader-Settings/ Rollen bei jedem Login aktualisieren).
Startet ein AD-Benutzer die .NET-Applikation ohne entsprechende AD-Gruppen-Zugehörigkeit, erscheint das herkömmliche Login mit Benutzer und Passwort.
Übersicht Login Prozess über ActiveDirectory SingleSignOn.
Nachfolgende Grafik zeigt die Abläufe bei einer Benutzeranmeldung über ActiveDirectory SingleSignOn. Die mit einem Stern gekennzeichneten Darstellungssymbole sind Funktionalitäten, welche ganz oder teilweise über Konfigurationsparameter beeinflussbar sind.
Vorgehen Umstellung auf ActiveDirectory Support
AD-Server
AD-Gruppen einrichten
AD Gruppen einrichten, welche in der Nexus Schweiz .NET Applikation spezifische Rollen/Mandanten Rechte zugewiesen werden. Siehe auch AD-Gruppen-Rollen-Zuordnungen definieren/anlegen.
AD-Benutzer zu AD-Gruppen zuweisen
Nexus .NET-Applikation für AD einrichten (am Beispiel von sbs.NET)
Das Form AD-Gruppen-Rollen-Zuordnung in das Menu integrieren (sofern nicht schon im App-Menu vorhanden).
Den neu angelegten Menupunkt berechtigen
AD-Gruppen-Rollen-Zuordnungen definieren/anlegen
Ein AD-Benutzer kann verschiedene Rollen in verschiedenen Mandanten gleichzeitig wahrnehmen. Ein Beispiel der AD-Mapping Tabelle sieht folgendermassen aus:
Abbildung 6: .NET Anwendung Ad-Gruppen-Rollen-Zuordnung verwalten
Hinweis: Es muss zuerst [Neu] getätigt werden, damit die Eingaben anschliessend gespeichert werden können. Diese Usability wird in kommenden Versionen noch verbessert.
Feldbeschreibung:
Feld | Beschreibung |
Domäne | Active Directory Domänen Name |
Gruppe | Active Directory Gruppe, von welcher AD-Benutzer Mitglied sein können. |
Mandant | .NET Applikation Mandant |
Rolle | .NET Applikation Rolle |
Funktion der AD-Gruppen-Rollen-Zuordnungen:
Aufgrund der hier gespeicherten Einträge, werden einem AD-Benutzer die Rollen/Mandanten-Berechtigungen automatisch zugewiesen. Diese automatische Zuweisung erfolgt beim erstmaligen Anmelden und automatischen Anlegen des AD-Directory Benutzers in der Nexus .NET Applikation Benutzertabelle (Siehe Login-Prozess der .NET-Anwendung bei aktiviertem AD-Autologin) und auch bei jeder weiteren Anmeldung, sofern dies so eingestellt ist (siehe „Rollen bei jedem Login aktualisieren" in den Systemoptionen/Loader-Settings).
Systemoptionen/Loader-Settings
Funktion/Feld | Beschreibung |
Automatisches Anlegen AD-Benutzer | EIN (Default) |
Rollen bei jedem Login aktualisieren | EIN |
Maximale Länge des Logins | Beim „Automatischen Anlegen AD-Benutzer" wird mit dem Domänen-Name und dem AD-Benutzer-Name (z.B. ENTWICKLUNG\peter.haeller) ein neuer .NET-Applikationsbenutzer angelegt. Der hier vorgegebene Wert, definiert die maximale Anzahl Zeichen für die Benutzer-ID (c_user.userid). |
.NET Applikation Benutzer
Die AD-Funktionen im Benutzer-Form
Funktion/Feld | Beschreibung |
Grid-Spalte AD-Benutzer | In der Spalte AD-Benutzer wird der Domänen-Name und der AD Netzwerkbenutzer-Name angezeigt, welcher dem Benutzer zugeordnet ist. |
Grid-Spalte ad_sid | Diese Spalte ist Standardmässig nicht sichtbar. Sie kann bei Bedarf über die Kontextmenu-Funktion Feldauswahl zum Grid zugefügt werden. Sie zeigt die AktiveDirectory-Systemid, welche der zugeordnet AD-Benutzer hat. |
Importieren aus Aktive Directory | Hilfsfunktion, über welche mehrere AD-Benutzer in einem Arbeitsgang als neue .NET-Applikation- Benutzer importiert bzw. angelegt werden können. Siehe Importieren aus Active Directory |
Hinzufügen zum AD | Einem bestehenden .NET-Applikation-Benutzer einen AD-Benutzer zuordnen (Mapping). Detaillierter Vorgang siehe Hinzufügen zum AD (Mapping). |
Entfernen aus AD | Die Zuordnung (Mapping) des AD-Benutzer entfernen (Unmapping). |
Vorgang neue Benutzer aus AD-Benutzern anlegen (Importieren)
Importieren aus Active Directory
Hinweis: Beim Erstmaligen Öffnen der Funktion kann es eine Weile dauern bis die AD-Netzwerkbenutzer vom AD-Server in die Auswahl eingelesen sind. Die Dauer hängt von der Anzahl Benutzer im AD-Netzwerk ab.
Ein oder mehrere AD-Benutzer selektieren, welche importiert und damit als neuer .NET-Applikation Benutzer angelegt werden soll.
Mittels Importieren wird für die selektierten Benutzer je ein neuer .NET-Applikationsbenutzer angelegt.
Hinweis: Da der AD-Benutzer gleichzeitig auch .NET-Benutzer ist, wird in der Spalte AD-Benutzer nichts angezeigt. Die Spalte AD-Benutzer wird nur bei einem Benutzer-Mapping abgefüllt (siehe Hinzufügen zum AD (Mapping)). In der zusätzlich verfügbaren Spalte ad_sid ist jedoch die AD-System-ID ersichtlich:
Vorgang bestehende Benutzer zu AD-Benutzern zweisen.
Hinzufügen zum AD (Mapping)
Hinweis: beim erstmaligen Öffnen der Funktion kann es eine Weile dauern bis die AD-Netzwerkbenutzer vom AD-Server in die Auswahl eingelesen sind. Die Dauer hängt von der Anzahl Benutzer im AD-Netzwerk ab.
Entfernen aus AD (Mapping)
Die Zuordnung (Mapping) des AD-Benutzer entfernen (Unmapping).
Anzumeldende Datenbankkonfiguration festlegen
Falls mehr als eine Datenbankkonfiguration in der entsprechenden Datei DataSources.xml definiert sind, wird beim AD-Autologin automatisch die sogenannte Default-Configuration zur Anmeldung verwendet. Soll also ein Client auf einer spezifischen Datenbank mit AD-Autologin anmelden, dann muss die Default-Configuration in der Datei DataSources.xml des entsprechend angepasst werden.
Applikation-Anmeldung auf AD SingleSignOn umstellen
Inproc
Den ClientCredentialTyp in der .NET-Applikation muss in der entsprechenden Applikationskonfiguration auf AD-Credentials umstellt werden.
Folgend sind die jeweiligen Config-Dateien aufgelistet, in denen die Umstellung erfolgen muss:
sbs.NET: Finance.WPFApp.WPFStarterInProc.exe.config
Fwh: Nexus.Finance.WPFApp.WPFStarterInProc.exe.config
NEXUS / HEIM: Heim.WinApp.Loader.exe.config
Konfig | Beschreibung | Bereits vorhanden? |
D | AD Login | neu |
U | manuell User+PW | bisher |
W | IntegratedLogin | bisher |
C | Certificate | bisher |

Value „U" auf „D" für ActiveDirectory Aktivierung

ClickOnce/Webservice
Wie unter Inproc beschrieben, jedoch ist die Configuration ClientCredentialTyp jeweils in anderen Config-Dateien vorzunehmen:
sbs.NET: web.config (Standard Ordner: financewebservices)
Fwh: web.config (Standard Ordner: financeWithHospisWebServices)
NEXUS / HEIM: web.config (Standard Ordner: HeimWS)
Login-Prozess der .NET-Anwendung bei aktiviertem AD SingleSignOn
Nach dem Starten der Anwendung (Inproc Exe oder ClickOnce URL) erscheint der .NET Applikation Splash-Screen und bei erfolgreicher Anmeldung wird die Applikation mit dem AD-Benutzer und der Default-Configuration gestartet:
Hinweis: Erstanmeldung mit autom. Anlegen AD-Benutzer (siehe Systemoptionen/Loader-Settings)
Wird nach der AD-Autologin Umstellung erstmalig angemeldet und der AD-Benutzer existiert in der .NET-Applikation noch nicht, wird mit den definierten AD-Gruppen-Rollen-Zuordnung automatisch ein neuer .NET Applikation Benutzer mit den entsprechenden .NET Applikation Rollen-Zuordnungen angelegt.
Hinweis: AD-Autologin nicht erfolgreich
Kann das AD-Autologin nicht erfolgreich durchgeführt werden (z.B. wegen unzureichenden Rechten, oder inaktivem Benutzer) wird die Applikation nicht gestartet und das Login-Fenster (wie bisher gewohnt) erscheint.
Hinweis: AD-Autologin mit einem gemappten Benutzer (siehe Die AD-Funktionen im Benutzer-Form)
Erfolgt die Anmeldung mit einem gemappten AD-Benutzer zu bisherigem .NET-Applikation-Benutzer wird im Loader Status-Bar die bisherige Benutzer-ID angezeigt. Die AD-Benutzer-ID ist nicht ersichtlich.
Beispiel gemappter AD-Benutzer ENTWICKLUNG/Peter.Häller auf .NET-Applikation-Benutzer Stierli
Nach der Anmeldung mit dem AD-Benutzer ENTWICKLUNG/Peter.Haeller ist im Statusbar der Anwendung die gemappte Applikation-BenutzerID Stierli ersichtlich. Alle Benutzeraktivitäten der .net-Applikation erfolgen auf den Benutzer Stierli (wie bisher):
Beispiel erfolgloses AD-Login infolge inaktivem Applikationsbenutzer

Besondere Hinweise
Hinweis Benutzer individuelle Rechte
Benutzer individuelle Zugriffsrechte und automatische AD-Rollen Aktualisierung
Wie bisher bei „normalen" Benutzern ist es auch bei AD-Benutzern mit AD-SID möglich, benutzerindividuelle Zugriffsrechte in der .NET Applikation zu vergeben. Werden solche für einen AD-Benutzer in der .NET-Applikation angelegt, müssen diese auch weiterhin in der .NET-Applikation verwaltet werden. Benutzer individuelle Rechte sind von der automatischen User-Rollen Aktualisierung nicht beeinflusst (siehe Systemoptionen/Loader-Settings/AD-Settings).
.NET Applikation Benutzer basierende Zugriffsrechte
Hat die .NET Applikation Zugriffsrecht, welche ausschliesslich auf Benutzer-Ebene definiert werden (welche also nicht auf Rollen-Ebene definierbar sind), müssen diese in der .NET Applikation administriert und verwaltet werden.
Beispiel
In finanz.NET werden Datenzugriffe auf Fibu-Konti, Kostenstellen, Kostenarten und Projekte auf Benutzerebene eingerichtet.
Wichtiger Hinweis: Wird ein AD-Benutzer in der .NET-Anwendung automatisch mit den definierten AD-Rollen angelegt, so hat dieser noch keine Datenzugriff Berechtigungen. Damit ein solcher Benutzer in finanz.NET buchen kann, müssen ihm in der .NET Applikation finanz.NET die Datenzugriffsrechte gegeben werden.
Wichtiger Hinweis beim SSO-Betrieb mit intergiertem MatClassic
MatClassic arbeitet stark integriert mit den .NET Anwendungen finanz.NET und pat.NET/patClassic.
Die MatClassic Benutzerverwaltung basiert noch auf der Classic Tabelle user mit maximaler user.userid von 8 Zeichen. Finanz.NET und pat.NET basiert auf der .NET Benutzerverwaltung mit der Tabelle c_user mit maximaler c_userid von 255 Zeichen.
Die Benutzer der Benutzerverwaltung beider Anwendungen werden synchronisiert. Damit die Betriebskompatibilität mit MatClassic gewährleistet ist, darf ein Benutzer der .NET-Benutzerverwaltung c_user.c_userid nicht mehr als 8 Zeichen haben. Diese Restriktion muss auch beim Arbeiten mit ActiveDirectory Integration eingehalten werden. Folgende Grundsätze sind dafür zu berücksichtigen:
Das automatische Anlegen der AD-Benutzer muss ausgeschaltet sein
Systemoptionen/Loader-Settings/ Automatisches Anlegen AD-Benutzer=AUS
Bestehende Benutzer müssen mit korrespondierenden AD-Benutzern gemappt werden.
=> Hinzufügen zum AD (Mapping)
Neue Benutzer müssen in der .NET-Benutzerverwaltung mit max. 8 Zeichen BenutzerID angelegt werden
=> .NET Applikation Benutzer
und dann ebenfalls mit dem korrespondierenden neuen AD-Benutzer gemappt werden.=> Hinzufügen zum AD (Mapping)
Ob die Rollen bei jedem Login aktualisiert werden sollen, muss Kundenprojekt individuell entschieden werden.
=> Systemoptionen/Loader-Settings/ Rollen bei jedem Login aktualisieren