Active Directory
24.01.2022
Marco Berger

Login für Low Code Anwendungen mit Microsoft Active Directory & Azure AD

Ein On-premise Microsoft Active Directory und Low Code Webanwendung passen prima zusammen.

IT-Abteilungen sind oft unzureichend besetzt. Da sollte sich die nächste Anwendung möglichst gut in die existierende Infrastruktur einpassen. Falls nicht, muss man wertvolle Zeit in Integrationen investieren. Das muss nicht sein - auch Low Code Anwendungen können Authentifizierung und Autorisierung über ein Microsoft Active Directory abbilden.

Im Folgenden möchte ich erklären, wie man existierende AD-Accounts für Low Code Anwendungen nutzen kann. Dazu erkläre ich kurz die Grundlagen zu Azure AD, der Graph API und OAuth 2.0 mit den passenden Scopes. Im Weitern Verlauf schauen wir uns dann einen beispielhaften Lebenszyklus eines AD-Accounts an. Das reicht vom Anlegen des Accounts im Active Directory bis zum automatisierten Löschen nach dem Offboarding.

Da dieser Artikel einen Überblick über die Vorgehensweise geben soll, werde ich hier auf technische Details verzichten. An den entsprechenden Stellen werde ich Dokumentationen und weiterführende Artikel verlinken.

Grundlagen: Wie man Microsoft Active Directory in der Cloud nutzt

Die meisten Low Code Anwendungen werden als Webanwendungen gehostet - sie “leben in der Cloud”. Daher benötigt die Integration einer Low Code-Anwendung mit dem Active Directory drei grundlegende Bausteine. Dies sind die Synchronisation des Active Directories in das Azure AD, die Microsoft Graph API und OAuth 2.0.

Active Directory User in ein Azure AD synchronisieren

Zuallererst müssen die User, die in dem On-premise Directory gespeichert sind, in der Azure Cloud bereitgestellt werden. Das Azure Pendant zum On-premise Directory ist das Azure AD. Die User, des On-premise Directories können mittels Synchronisation in das Azure AD(https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/identity/azure-ad) übertragen. Dabei ist zu beachten, dass die Synchronisation nur von On-premise AD hin zu Azure AD funktioniert. Es kann auch vom Azure AD zurückgeschrieben werden, das benötigt allerdings ein komplexeres Setup mit group writebacks (https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-group-writeback).

Microsoft Graph API zum Lesen von Profil-Informationen

Die Microsoft Graph API (https://docs.microsoft.com/en-us/graph/overview) dient eigentlich als Einstiegspunkt für Microsoft 365 und die damit verbunden “persönlichen” Services wie Dokumente, Chats, Kalender oder E-Mails. Allerdings kann über die Graph API auch Profil-Information der Azure AD-Accounts abgerufen werden (zum Beispiel Personalnummern und Rollen).

OAuth 2.0

Der Standard OAuth 2.0 dient zur Authentifizierung und Autorisierung. Damit kann sich ein Resource Owner (Nutzer im Azure AD) eines Clients (unsere Low Code Anwendung) über einen Authorization-Server (Azure AD) authentifizieren. Der Resource Owner (Nutzer im AD) kann dem Client (unserer Low Code Anwendung) Zugriff auf Ressourcen (wie ein Profil eines Azure AD-Users) gewähren. Dieser Zugriff wird von einem Ressource-Server überprüft (die Microsoft Graph API).

Wir benötigen also OAuth 2.0 als einen Weg, uns mit dem Azure AD-User an einer dritten Anwendung anzumelden und dieser Anwendung Zugriff auf ein Azure AD-Profil zu gewähren. Damit kann zum Beispiel eine Personalnummer oder eine Rolle ausgelesen werden.

Damit nicht zu viel von den Profil-Informationen preisgegeben wird, kann man bei der Anbindung der Microsoft Graph API über OAuth 2.0 mit den passenden Scopes (https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent) arbeiten. Hier empfiehlt es sich, mit wenigen Scopes zu starten und die List bzw. den Zugriff ja nach Bedarf zu erweitern.

Beispielhafte Integration von Low Code Anwendung und Microsoft Azure AD

Nachdem wir uns kurz mit den Grundlagen beschäftigt haben, wollen wir nun eine beispielhafte Integration durchspielen. Dabei orientieren wir uns am Lebenszyklus eines Accounts im On-premise Active Directory.

Die Abbildung zeigt das, in den Grundlagen erklärte Setup. Weiter unten findet sich die gleiche Abbildung mit den im Folgenden erklärten Schritten.

Low Code Anwendung mit Azure AD

Schritt 1 - Anlegen eines Users

Ein neuer User wird im On-premise Active Directory angelegt. Dazu gibt es meist schon Prozesse im Unternehmen, auf die hier nicht weiter eingegangen werden soll. Das kann zum Beispiel die Einstellung eines Mitarbeiters oder das Anlegen eines Test-Users sein.

Schritt 2 - Synchronisation des Users

Der angelegte User wird über die oben erklärte Synchronisation in das Azure AD synchronisiert. Er steht damit über die Microsoft Graph API zur Verfügung und kann in einem OAuth 2.0 Flow für einen Login genutzt werden.

Schritt 3 - Anlegen des Users in der Low Code Anwendung

In der Regel bieten Low Code-Anwendungen eine vorgefertigte Funktionalität, um Logins über einen OAuth 2.0 Flow anzubieten. Während des ersten Logins eines User über diesen Flow wird ein neuer User in der Low Code-Anwendung angelegt. Im User-Objekt der Low Code-Anwendung wird eine ID oder Email-Adresse gespeichert, welche den User mit dem entsprechenden Azure AD-User verknüpft.

Es existiert jetzt also sowohl in der Low Code-Anwendung, als auch im Azure AD ein User. Beide sind über eine eindeutige ID oder eine E-Mail-Adresse miteinander verknüpft.

Schritt 4 - Weitere Attribute abfragen

In einem automatischen Workflow können jetzt über die Microsoft Graph API weitere Attribute zu dem Azure AD-User bzw. dessen Profil abgefragt werden. Über das Setzen der entsprechenden Scopes, ist die Low Code-Anwendung dazu berechtigt im Namen des Users weitere Profildaten abzurufen. Hier können jetzt zum Beispiel eine Personalnummer und eine Rolle aus dem Azure AD abgerufen und im User-Objekt der Low Code-Anwendung abgespeichert werden.

Schritt 5 - Login des Users über OAuth 2.0

Im weiteren Verlauf kann es sein, dass die Session des Users abläuft oder der User sich manuell ausloggt. Über die OAuth 2.0-Integration kann sich der User jederzeit wieder in der Low Code-Anwendung anmelden. Dazu nutzt er seine Azure AD bzw. sein On-premise Active Directory Nutzername und Passwort.

Schritt 6 - Autorisierung in der Low Code-Anwendung

Die Abfrage der weiteren Attribute, wie zum Beispiel einer Rolle (siehe Schritt 4), erlaubt es uns in der Low Code Anwendung eine Autorisierung zu implementieren. So können wir zum Beispiel die Sichtbarkeit bestimmter Daten auf eine bestimmte Rolle des Users beschränken. Dadurch können wir in der Low Code Anwendung einen Autorisierungsmechanismus aufbauen, der auf Attribute aus dem On-premise Active Directory zurückgreift. Wir müssen also Autorisierungen nicht mehr an mehreren Stellen pflegen und sparen dadurch Aufwand, bzw. steigern die Integrität unserer Daten.

Schritt 7 - Löschen des User-Objekts in der Low Code-Anwendung

Schlussendlich wollen wir sicherstellen, dass in unserer Low Code-Anwendung keine User vorhanden sind, die aus dem Active Directory entfernt wurden. Das kann zum Beispiel auftreten, wenn ein Mitarbeiter das Unternehmen verlässt oder ein Test-User gelöscht wird. Hierzu sind zwei Wege denkbar. Einerseits können wir automatisiert in regelmäßigen Abständen (oder auch bei jeden Login in der Low Code-Anwendung) an der Microsoft Graph API abfragen, ob das User-Profil noch existiert. Ist es nicht mehr vorhanden, kann das User-Objekt gelöscht werden.

Ebenso könnten wir einen Mechanismus ergänzen, der beim Löschen eines Users im Active Directory eine Status-Meldung an die Low Code-Anwendung pusht. Das könnte zum Beispiel ein einfacher HTTP-Request sein, der vom AD an die Low Code-Anwendung geschickt wird und dort einen Workflow zum Löschen des User-Objekts anstößt.

Lebenszyklus eines Users

Zusammenfassung

Wir haben gesehen, dass sich Low Code-Anwendungen und ein On-premise Active Directory nicht gegenseitig anschließen. Im Gegenteil, sie funktionieren mithilfe vom Azure AD, der Microsoft Graph API und OAuth 2.0 sehr gut zusammen. Anhand eines exemplarischen Lebenszyklus haben wir verstehen können, wie die einzelnen Komponenten zusammenspielen und uns eine Nutzung unseres ADs in einer Low Code-Anwendung ermöglichen.

Du hast Fragen zu diesem Thema?

Kontakt aufnehmen
Biberei Icon

Kategorien

API
Low Code
Mittelstand

Lass uns über dein Projekt reden

Erzähle uns in einem kostenlosen Erstgespräch mehr über dein individuelles Projekt. Wir helfen dir bei den nächsten Schritten und teilen unser Wissen.

Nachricht schreiben