
BTP - E-Mail Anbindung OAuth 2.0
Die Mail-Anbindung per Basic Auth funktioniert nun nicht mehr. Welche Möglichkeiten bestehen alternativ für die Anbindung von Office365 an das ABAP Environment und wie kannst du sie einrichten?
Inhaltsverzeichnis
In einem der ersten Artikel rund um das ABAP Environment hatten wir uns mit der Konfiguration von Office 365 beschäftigt und wie du alles im ABAP Environment anwenden kannst. Heute dazu ein Nachfolgeartikel.
Einleitung
Microsoft hat die Anmeldung per Basic Authentication, also per User und Passwort, an Outlook und Office 365 deaktiviert. Grundsätzlich gilt diese Anmeldemethode nicht mehr als die sicherste, weshalb Microsoft diese auch abschalten möchte. Das bedeutet nun, dass wir unsere Konfiguration im ABAP Environment auf eines der neuen Verfahren umstellen müssen. In diesem Artikel schauen wir uns deshalb einmal OAuth 2.0 an und hier vor allem die zwei verschiedenen Verfahren, die möglich sind. Der Artikel hat etwas länger gedauert, da vor allem am Anfang die Verwendung von OAuth 2.0 für das Communication Arrangement nicht vorgesehen war und erst seitens SAP implementiert werden musste.
Azure
Um mit der Grundkonfiguration beginnen zu können, müssen wir Einstellungen in Azure vornehmen, da diese für die Anmeldung wichtig sind. Du benötigst also einen Account auf Azure, wo normalerweise auch deine E-Mail-Adresse angelegt ist, um dich mit dem Server zu verbinden. Weiterhin bist du entweder Admin oder kennst die Admins des Accounts, um spätere Konfigurationen vornehmen zu können.
Anwendung
Melde dich also zuerst auf dem Azure Portal an und navigiere dann in den Entra Service, um die Konfiguration vornehmen zu können. Dort müssen wir eine neue App Registration vornehmen. Die App Registration ist wichtig, um uns an der Plattform anzumelden und die nötigen Berechtigungen zu erhalten. Im Bereich von Entra findest du deshalb im Seitenmenü unter "App Registration" diesen Punkt, kannst diesen aufrufen und findest oben den Button "New application", um eine neue Anwendung anzulegen. Die einzelnen Schritte beschreiben wir hier nicht im Detail, hier kannst du dir die öffentlich verfügbare Dokumentation von Microsoft anschauen.
Ist die neue Anwendung dann verfügbar, findest du auf der Übersichtsseite den Display Name, den du während der Erstellung angegeben hast, sowie die Application ID, die Object ID und die Directory ID. Diese Informationen benötigen wir in späteren Schritten, du solltest sie dir also merken. Wichtig sind hier vor allem die Application ID und die Directory ID für die Anbindung.
Berechtigung
Damit wir später über die Anwendung neue E-Mails verschicken können, müssen wir noch die Berechtigung für Office Exchange hinzufügen. Gehe dazu in der Anwendung in den Bereich "Manage". Dort findest du die "API Permissions", wo du die Berechtigung hinzufügen kannst und später auch der Admin sie genehmigen kann.
Hier wählen wir die "SMTP.SendAsApp" aus. Diese Berechtigung reicht für den Versand aus. Diese Berechtigung muss von deinem Admin für die Plattform dann auch bestätigt werden, ansonsten hat dein User keine Berechtigung, wenn er sich anmeldet, und kann keine E-Mails verschicken.
Registrierung
Als Nächstes muss nun die Anwendung als Service Principal registriert werden. Dazu findest du die folgende Anleitung bei Microsoft. Diese muss durch einen Administrator von Azure durchgeführt werden und wird in den meisten Fällen über eine Konsole ausgeführt. Die verschiedenen Schritte sind in der Dokumentation beschrieben. Ohne diesen Service Principal hat die Anwendung am Ende keine Berechtigung und du erhältst beim Versand verschiedene Fehlermeldungen.
ABAP Environment
Ist die Grundkonfiguration dann in Azure abgeschlossen, können wir zurück ins ABAP Environment gehen, um unsere Einstellungen vorzunehmen.
Communication System
Dazu legen wir im ersten Schritt ein neues Communication System an, um uns gegen Entra zu verbinden. Im oberen Teil hinterlegen wir dann unseren SMTP-Server. Hier ist es wichtig, dass du vor allem den richtigen Port verwendest: nicht 443 wie im alten, sondern 587, um E-Mails versenden zu können.
In den OAuth-Einstellungen müssen wir dann die Client Settings vornehmen. Hier ist wichtig, dass wir den Authorization Endpoint und den Token Endpoint definieren. Diese werden benötigt, um ein Anmeldetoken zu erhalten und die Session über OAuth aufbauen zu können.
In den OAuth-Einstellungen müssen wir dann die Client Settings vornehmen. Hier ist wichtig, dass wir den Authorization Endpoint und den Token Endpoint definieren. Diese werden benötigt, um ein Anmeldetoken zu erhalten und die Session über OAuth aufbauen zu können.
login.microsoftonline.com/<DIRECTORY-ID>/oauth2/v2.0/token
login.microsoftonline.com/<DIRECTORY-ID>/oauth2/v2.0/authorize
Damit ist unsere Einstellung noch nicht abgeschlossen. Hier müssen wir uns im nächsten Schritt entscheiden, welche Anmeldemethode wir verwenden wollen. Entsprechend sollten wir unseren Outbound-User anlegen und können dann das Communication System speichern.
Methode A - Basic
Bei der ersten Methode handelt es sich um ein ähnliches Konzept wie bei der Basic Authentication. Hier verwenden wir die Client ID und ein Client Secret, um uns am Service anzumelden. Dazu legen wir einen neuen Outbound-User an, wählen die Authentication-Methode OAuth 2.0 und die Client Authentication Basic. Als Client ID verwenden wir die Application ID aus unserer Anwendung. Das Client Secret definieren wir im nächsten Schritt über die Azure-Plattform.
In Azure wechseln wir in unsere Anwendung und finden im Bereich Manage dann die Certificates & Secrets. Dort können wir Client Secrets auswählen und ein neues Client Secret anlegen. Dies ist wie ein Passwort, welches wir dann in der Konfiguration eintragen können. Normalerweise hat das Client Secret, welches wir hier anlegen, auch nur eine gewisse Haltbarkeit, die wir bei der Anlage definieren und die je nach Einstellungen in deinem Azure-Account unbegrenzt oder nur begrenzt möglich ist.
Methode B - JWT
In der zweiten Variante wählen wir als Client Authentication JWT (JSON Web Token) und tragen dort die Application ID wieder als Client ID ein. Bevor wir allerdings den User anlegen können, müssen wir über den Button "Download Certificate" das Zertifikat herunterladen, um es dann in Azure zur Verfügung zu stellen.
Im nächsten Schritt gehen wir dann in Azure wieder in unsere Anwendung und finden im Bereich Manage unter Certificates & Secrets den Bereich Certificates. Hier müssen wir das gerade heruntergeladene Zertifikat hochladen, damit die Anmeldung dann durchgeführt werden kann. Bei diesem Verfahren ist kein Passwort nötig, die Haltbarkeit ist abhängig vom Zertifikat und dessen Dauer.
Communication Arrangement
Damit sollten wir nun ein Communication System mit entsprechender Anmeldung definiert haben. Im nächsten Schritt legen wir entweder ein neues Communication Arrangement oder passen unser altes Communication Arrangement für das Szenario SAP_COM_0548 an. In den Additional Properties geben wir dann die E-Mail-Adresse an, mit der wir uns anmelden. Dies ist normalerweise auch die E-Mail-Adresse, über die wir dann später die E-Mails verschicken. Unter der Outbound Communication wählen wir dann unseren User aus, den wir angelegt haben, mit der entsprechenden Authentication Method, die wir verwenden wollen.
Nach der Auswahl der Methode müssen wir dann im unteren Teil den Additional Scope definieren. Dieser ist wichtig, um die passenden Berechtigungen nach der Anmeldung zu erhalten und mit der Anwendung zu interagieren. Hier findest du das Snippet, um es im Scope einzufügen. Mit ENTER sollte dieses übernommen werden.
https://outlook.office365.com/.default
Zum Abschluss solltest du in dem Bereich noch einmal das Arrangement und die Anmeldung prüfen. Hier muss der richtige Port 587 eingetragen sein. Hast du zum Beispiel das alte Communication Arrangement angepasst und es steht noch 443, kommt es zu Fehlermeldungen, die nicht unbedingt selbsterklärend sind.
Fazit
Die Umstellung auf OAuth 2.0 ist eher ein Must-have und sollte von dir angegangen werden, um die Kommunikation über Azure sicherzustellen und die Anmeldung deiner E-Mail weiterhin nutzen zu können. Es sind einige Schritte nötig, um die Konfiguration durchzuführen, vor allem auf Azure. Die Registrierung der Berechtigungen und des Service Principals kann je nach Organisation und Aufteilung des Accounts etwas schwieriger werden.
Weitere Informationen:
Microsoft - Exchange Online-Integration
Microsoft - Register Service Prinicpal










