Konfiguration von OAuth2 - Modern Authentication
Diese Anleitung dient dazu alle nötigen Schritte durchzuführen, um das System korrekt zu konfigurieren, sodass eine Interaktion von MailServ mit Exchange Online über EWS und IMAP funktioniert.
Azure Portal
Im ersten Step wird die App im Azure Portal registriert und konfiguriert. Falls die App schon vorhanden sein sollte, muss diese zwecks Umstellung auf Modern Authentication erweitert werden.
App Registrierung
Zuerst wird eine App benötigt, die im Azure Portal registriert werden muss. Hierfür ruft man mit einem User mit Adminrechten die Seite portal.azure.com auf.
Im linken Bereich wählt man die Rubrik Azure Active Directory aus. Es wird ein neues Menü angezeigt. Wichtig für uns ist hier der Bereich App-Registrierungen. Den Bereich einmal durch einen Linksklick öffnen.
Es erscheint eine Oberfläche mit der Übersicht der (falls vorhanden) bereits erstellten Apps. Um eine neue App zu registrieren, muss im oberen Menübereich auf die Schaltfläche Neue Registrierung geklickt werden.
Im nächsten Step muss dann die App konfiguriert werden.
Je nach Einsatzgebiet kann die App unterschiedlich konfiguriert werden. Am Ende auf Registrieren klicken und die App wurde erstellt.
In der Übersicht werden nun verschiedene Informationen über die App angezeigt. Für uns sind allerdings nur zwei IDs relevant.
Verzeichnis-ID (Tenant)
Anwendungs-ID (Client)
Client Secret
Im nächsten Schritt wird ein sogenanntes Client Secret erstellt, welches von der Anwendung genutzt wird.
Um ein solches Secret zu erstellen muss auf die Schrift für Clientanmeldeinformationen oder in der Übersicht auf Zertifikate & Geheimnisse geklickt werden.
In der Übersicht dann auf den Reiter Geheime Clientschlüssel klicken und einen neuen Schlüssel erzeugen. Die Dauer der Gültigkeit kann frei bestimmt werden. Wenn ein Schlüssel abläuft, kann sich die Anwendung nicht mehr mit der App verbinden und muss erneuert werden.
Nachdem der Schlüssel erzeugt wurde, wird dieser kurz angezeigt. Dieser Schüssel wird benötigt, damit MailServ den Exchange via EWS oder IMAP mit OAuth 2 und Modern Authentication ansteuern kann.
Das Client Secret wird nur einmal angezeigt. Wenn die Übersicht vom Client Secret geschlossen wird, kann dies nicht erneut eingesehen werden. Es wird empfohlen sich das Client Secret an einem sicheren Ort, z.B. einem Passwort-Manager o.ä., zu sichern. Wenn das Client Secret verloren geht, kann jederzeit ein neues generiert werden. Dann müsste dies allerdings in jeder Anwendung ausgetauscht werden.
API-Berechtigungen
Jetzt müssen noch API-Berechtigungen vergeben werden. Hierfür wechselt man mit einem Linksklick auf die Überschrift API-Berechtigungen in den Bereich der API-Berechtigungen. Im oberen Bereich auf die Schaltfläche Berechtigung hinzufügen klicken und den Bereich Microsoft Graph auswählen. In diesem Scope folgendes selektieren:
Directory.AccessAsUser
Directory.Read.All
email
EWS.AccessAsUser.All
Group.Read.All
offline_access
openid
profile
SMTP.Send
User.Read
User.Read.All
User.ReadBasic.All
Anschließend muss ein weiterer Bereich hinzugefügt werden: Office 365 Exchange Online
In diesem Bereich müssen folgende Scopes hinzugefügt werden:
full_access_as_app
IMAP.AccessAsApp
Wenn alles hinzugefügt worden ist, können über die Schaltfläche Administratorzustimmung für “[ORGANISATION]” erteilen die Berechtigungen erteilt werden. Am Ende sieht das dann wie folgt aus:
In einigen Fällen ist es notwendig, dass zusätzlich noch Berechtigungen Type “Application/Anwendung” auch für die Microsoft Graph API vergeben werden. Hier muss die Berechtigung für den Type “Application/Anwendung” für folgende Funktionen erfolgen.
Directory.Read.All
Group.ReadAll
User.ReadAll
Das Bereitstellen der Berechtigungen dauert in der Regel 5 Minuten, also nicht wundern, falls es nicht auf Anhieb mit der Verbindung klappen sollte.
Microsoft 365 Admin Center
Um die Modern Authentication zu aktivieren, muss dies im Admin Center eingestellt werden. Das Portal lässt sich über https://portal.office.com/Adminportal#/homepage aufrufen.
Org Settings
Modern Authentication
Um die nötigen Einstellungen vorzunehmen muss im Home-Bereich auf die Rubrik Settings und anschließend auf die Unterrubrik Org Settings geklickt werden. Im Anschluss stehen viele Services als Auflistung bereit. Hier muss man den Eintrag Modern Authentication suchen und selektieren. Auf der rechten Seite werden nun die Einstellungen angezeigt. Um die moderne Authentizierungsmethode zu aktivieren, muss der Haken bei Turn on modern authentication for Outlook 2013 for Windows and later gesetzt werden.
Achtung: Wenn OAuth2 in Verbindung mit IMAP genutzt werden soll, ist es nicht möglich, dies im Modus “User/Password” zu betreiben.
Basic Authentication
Microsoft schaltet die Basic Authentication zum 01.10.2022 automatisch ab. Für den Fall, dass es vorher deaktiviert werden soll, müssen die Haken bei den jeweiligen Protokollen entfernt werden. Für uns sind hier EWS und IMAP relevant, es können aber auch andere Protokolle deaktiviert werden.
Powershell
Es werden noch weitere Einstellungen nötig, um die Funktion von OAuth2 zu gewährleisten. Zum einen muss eine Richtlinie erstellt werden, falls die Basic Authentication vor dem 1.10. deaktiviert werden soll, zum anderen muss ein Principal eingerichtet werden.
Blocken der Basic Authentication
Wenn es gewünscht ist, die Basic Authentication vor dem 1.10. zu deaktivieren, muss eine Richtlinie zum Blocken der Basic Authentication erstellt und dem User zugewiesen werden.
Um diese einzurichten, muss eine Powershell im Admin Modus gestartet werden.
Zu Beginn muss die Exchange Online Management Console installiert werden. Hierfür benötigen wir folgendes cmdlet:
Install-Module -Name ExchangeOnlineManagement
Anschließend muss man sich mit einem User, welcher über Adminrechte verfügt, mit dem Exchange Online verbinden:
Connect-ExchangeOnline -UserPrincipalName user@domain.com
Nachdem die Credentials eingegeben wurden, wird die Verbindung zum Exchange aufgebaut:
Jetzt kann man eine neue Richtlinie zum Blocken hinzufügen:
New-AuthenticationPolicy -Name "Block Basic Auth"
Nachdem die Richtlinie erstellt wurde, kann diese nun Usern bzw. Identities zugewiesen werden:
Um zu überprüfen, ob der User die Richtlinie eingetragen bekommen hat, muss folgender Befehl ausgeführt werden:
Im Anschluss daran bekommt man eine Auflistung des Users mit allen Eigenschaften. Für uns ist die Eigenschaft “AuthenticationPolicy” von Bedeutung. Hier wurde die Policy “Block Basic Auth” eingetragen:
Damit die Richtlinie sofort greift, kann optional noch folgendes cmdlet ausgeführt werden:
Um die Richtlinie wieder zu entfernen, muss folgendes cmdlet ausgeführt werden:
Um nachzuschauen, ob die Richtlinie entfernt wurde, kann man entweder nach der Richtlinie suchen oder von einem User die Details abfragen. Dort ist dann beim Eintrag AuthenticationPolicy nichts mehr hinterlegt.
Am Ende trennen wir die Verbindung mit dem Exchange indem wir folgenden Dialog mit Y bestätigen:
Einrichtung Principal via Powershell für IMAP
Um einen Principal für einen Anwendung einzurichten benötigt man einige Module, die zuvor installiert werden müssen:
Im Anschluss müssen die Module importiert werden
Danach stellen wir die Verbindung zum AzureAD mithilfe des Tenants her:
Man wird nun aufgefordert sich mit den Credentials anzumelden. Hier wird auch ein User mit dementsprechenden Adminrechten benötigt.
Nun benötigen wir eine Variable, die quasi die Eigenschaften der Application besitzt. Um dies zu bewerkstelligen, führen wir folgendes cmdlet aus:
Wir können nun die Variable nutzen, um einen neuen ServicePrincipal anzulegen:
Nachdem der Principal eingerichtet wurde, kann ein User oder eine Identity die Berechtigung bekommen
Die Einrichtung mit der Powershell ist nun abgeschlossen. Nun muss die Verbindung im Credentialstore des Designers eingerichtet werden.
Designer (5.2)
Hier muss nun die Verbindung zum Exchange eingetragen werden.
Credential Store
Im Credential Store werden alle Module aufgelistet, die Credentials besitzen oder verwalten. Diese werden benötigt um beispielsweise eine Verbindung zu einem Endpunkt aufzubauen.
Exchange Web Services (EWS)
Um eine Verbindung zum EWS herzustellen benötigen wir folgende Informationen:
Eigenschaft | Beschreibung |
---|---|
Name | Name des Profils |
Server URL | URL zum EWS (z.B. https://outlook.office365.com/EWS/Exchange.asmx) |
Login Type | Art des Logins (Für OAuth2 und Modern Authentication muss zwingend Impersonation (Office 365) ausgewählt werden |
Konfiguriert sollte das Profil wie folgt aussehen:
Wir wechseln auf den zweiten Reiter zum Einstellen der Impersonation. Hier gibt es viele Eigenschaften, die zwingend benötigt werden:
Eigenschaft | Beschreibung |
---|---|
Tenant ID | Die Tentant ID oder Verzeichnis ID oder Mandanten ID wird für die Modern Authentication benötigt. Diese steht im Azure Active Directory in den Eigenschaften der erstellten App. |
Client ID | Die Client ID oder Application ID wird ebenfalls für die Modern Authentication benötigt. Sie ist ebenfalls im Azure Active Directory in den Eigenschaften der erstellten App zu finden. |
Client Secret | Das Client Secret wurde bereits angelegt und wurde nur einmalig angezeigt. Dieses wird benötigt, um eine Verbindung via OAuth2 zu realisieren. |
Impersonation User | Hier muss ein User eingetragen werden, der über Impersonation-Rechte verfügt. |
Entities | In diesem Bereich werden die User / Gruppen eingetragen, die impersoniert werden sollen. |
IMAP
Um eine Verbindung zum Exchange über IMAP herzustellen benötigen wir folgende Informationen:
Eigenschaft | Beschreibung |
---|---|
Name | Der Name des Profils |
Server URL | Die Adresse des Exchange Servers |
Port | Hier wird der SSL Port benötigt. Per Default ist dies 993 |
SSL Mode | Implicit |
IMAP Authentication | OAuth 2.0 |
Tenant ID | Die Tentant ID oder Verzeichnis ID oder Mandanten ID wird für die Modern Authentication benötigt. Diese steht im Azure Active Directory in den Eigenschaften der erstellten App. |
Client ID | Die Client ID oder Application ID wird ebenfalls für die Modern Authentication benötigt. Sie ist ebenfalls im Azure Active Directory in den Eigenschaften der erstellten App zu finden. |
Client Secret | Das Client Secret wurde bereits angelegt und wurde nur einmalig angezeigt. Dieses wird benötigt, um eine Verbindung via OAuth2 zu realisieren. |
Folder Separator | Trennzeichen für Ordner. Dieser wird automatisch vom Exchange ermittelt mit einem Klick auf die Pfeile. |
Testen der Verbindung
Die Verbindung des Profils kann mit einem Klick auf die Schaltfläche mit dem WLAN-Symbol getestet werden. Im Anschluss wird über eine Message Box das Ergebnis angezeigt, ob die Verbindung erfolgreich oder nicht erfolgreich aufgebaut werden konnte.
Einrichtung im Designer (5.1)
Der Aufbau im alten Designer ist etwas anders. Hier muss die Modulkonfiguration angepasst werden. Dorthin gelangt man über das Backstage Menü mit einem Klick auf File und dann auf Module und wählt dort das entsprechende Modul, so z.B. MailServ aus. Auf der rechten Seite befindet sich eine Schaltfläche mit dem Text Open Configuration. Mit einem Klick auf diese Schaltfläche gelangt man in die Modulkonfiguration. Hier gibt es zwei Reiter, welche die beiden Protokolle für die Verbindung mit einem Exchange Server zeigen.
EWS
General
Für die Einrichtung einer Exchange Verbindung per EWS muss ein neues Profil hinzugefügt oder ein bestehendes bearbeitet werden.
Eigenschaft | Beschreibung |
---|---|
Name | Name des Exchange Servers |
Server Url | Die URL des Servers Beispiel für Office365: https://outlook.office365.com/EWS/Exchange.asmx |
Postbox Login | Für OAuth2 muss hier zwingend Impersonation (Office 365) ausgewählt werden |
Users
Wenn die Eigenschaften im Reiter General gesetzt sind, kann mit dem Einrichten der Benutzer weitergemacht werden
Eigenschaft | Beschreibung |
---|---|
Grant Type | Gibt an, wie sich die Anwendung authentifizieren soll. Hier gibt es zwei Möglichkeiten
Wenn die Authentifizierung erfolgreich ist, erhält man einen Access Token. |
Tenant ID | Die Tenant ID oder Verzeichnis ID oder Mandanten ID wird für die Modern Authentication benötigt. Diese steht im Azure Active Directory in den Eigenschaften der erstellten App. |
Client ID | Die Client ID oder Application ID wird ebenfalls für die Modern Authentication benötigt. Sie ist ebenfalls im Azure Active Directory in den Eigenschaften der erstellten App zu finden. |
Client Secret | Das Client Secret wurde bereits angelegt und wurde nur einmalig angezeigt. Dieses wird benötigt, um eine Verbindung via OAuth2 zu realisieren. |
Impersonation User | Hier muss ein User eingetragen werden, der über Impersonation-Rechte verfügt. |
Password | Das Passwort des Impersonation Users. |
Users and Groups | In dieser Liste befinden sich alle Benutzer und Gruppen aus dem Office 365 Tenant. Die hinzugefügten User / Gruppen werden impersoniert. |
IMAP
Wenn man den Exchange via IMAP ansteuern möchte, muss man wie folgt vorgehen:
General
Eigenschaft | Beschreibung |
---|---|
Name | Name des Servers |
Server | Die Adresse des Exchange Servers |
SSL Mode | Hier muss bedingt durch TLS implicit ausgewählt werden |
Authentication | OAuth 2.0 Authentication |
Folder separator | (wird automatisch gesetzt) |
Im folgenden müssen die Einstellungen für OAuth gemacht werden:
Eigenschaft | Beschreibung |
---|---|
Tentant ID | Die Tentant ID oder Verzeichnis ID oder Mandanten ID wird für die Modern Authentication benötigt. Diese steht im Azure Active Directory in den Eigenschaften der erstellten App. |
Client ID | Die Client ID oder Application ID wird ebenfalls für die Modern Authentication benötigt. Sie ist ebenfalls im Azure Active Directory in den Eigenschaften der erstellten App zu finden. |
Client secret | Das Client Secret wurde bereits angelegt und wurde nur einmalig angezeigt. Dieses wird benötigt, um eine Verbindung via OAuth2 zu realisieren. |
Users
Wenn die Eigenschaften im Reiter General gesetzt sind, kann mit dem Einrichten der Benutzer weitergemacht werden. Hier müssen die Benutzer eingetragen werden, dessen Postfächer verarbeitet werden sollen. Bei mehreren Einträgen spielt die Reihenfolge eine Rolle. Es wird von oben nach unten abgearbeitet. Ein User wird mit dem FQDN und dem dazugehörigen Passwort eingetragen.
Testen der Verbindung
Wenn alles eingetragen wurde kann durch einen klick auf Test profile die Verbindung getestet werden. Das Ergebnis wird anhand von Symbolen im Profil und bei den Usern angezeigt