Exchange Online Authentifizierung

Microsoft macht langsam Ernst und plant die Anmeldung per "Benutzername/Kennwort" an POP, IMAP und immer mehr Diensten abzuschalten. Der neue Weg heißt "OAUTH", bei der sich der Client erst ein Zugangstoken bei einem zugelassenen Federation Service (evoSTS) besorgt. Dieser Service kann dann auch genutzt werden, um MFA, Conditional Access u.a. Mehrwerte umzusetzen.

Aktuell ist eine Anmeldung per "BasicAuth" an den Diensten noch möglich. Aber auch die Anmeldung per OAUTH ist schon freigeschaltet und Entwickler von eigenen Lösungen sollten sich langsam daran machen, ihre Applikationen zu erweitern.

Infos von Microsoft

Wenn man den Aussagen von Microsoft glauben darf, dann sollte an Oktober 2020 eine Anmeldung per POP/IMAP nur noch über ModernAuth möglich sein.

Allerdings hat Microsoft diese Aussage im April 2020 aufgrund von Corona aufgeweicht:

In response to the COVID-19 crisis and knowing that priorities have changed for many of our customers we have decided to postpone disabling Basic Authentication in Exchange Online for those tenants still actively using it until the second half of 2021. We will provide a more precise date when we have a better understanding of the impact of the situation.
Quelle: https://techcommunity.microsoft.com/t5/exchange-team-blog/basic-authentication-and-exchange-online-april-2020-update/ba-p/1275508

Das kann einfach ein Zugeständnis aufgrund von Covid-19 an Kunden sein oder auch aufgrund einer Knappheit an eigenen Kräften kein Risiko einzugehen. Ich persönlich denke aber, dass es noch viel zu viele Lösungen gibt, die Postfächer mit POP3/IMAP4 abrufen und einfach nicht schnell genug umgestellt werden können.

Microsoft ist aber nicht der einzige Anbieter, der OAUTH forciert.

Nutzung analysieren

Aber Sie sollten sich vorbereiten und wenn eine Applikation bis dahin nicht erweitert werden kann, sollten Sie die Postfächer besser auf einem lokalen Exchange Server umziehen. Auf jeden Fall ist ein Blick in die Anmeldeüberwachung ratsam, um die Nutzer von POP3/IMAP4 zu erkennen. Über das Azure-Portal können Sie im "Azure Active Directory" unter "Sign-Ins" auf die Clients Filtern.

Zuerst addieren Sie "Client App" als Filter um dann auf dem Filter die "Legacy Authentication Clients" anzukreuzen. Eventuell sollten Sie den Zeitraum von "24h" auf "1 Monat" umstellen. Sie sollten dann alle Anmeldungen an diesen Diensten aufgelistet bekommen. Client, die schon OAUTH nutzen, sind aus Sicht des AzureAD eben keine "Legacy Authentication Clients" sondern tauchen mit ihrem Applikationsnamen auf

Applikationen aktualisieren

Die neu möglich gewordene Sicherheit erfordert natürlich eine Anpassung der jeweiligen Anwendung. Allerdings ist niht nur Microsoft auf dem Weg zu OAUTH, sondern auch Google und andere Dienste erweitern ihre Anmeldungsoptionen.

Thunderbird konnte schon in der Version 38 (Releasde 11.Juni 2015) mit Google OAUTH.

Es dürfte also nicht lange dauern, bis die Funktion auch mit Office 365-Postfächern zur Verfügung steht. Ale anderen Programmierer sollten sich aber zügig mit dieser Funktion auseinandersetzen. Zumal Firmen auch ihre OnPremises-Systeme mittels Hybrid Modern Authentication (HMA) auf OAUTH umstellen.

Altlasten mit IMAP4 weiter betreiben

Es wird immer Programme oder Lösungen geben, die nicht mehr durch den Hersteller gewartet oder aktualisiert werden. Sie müssen aber auch nach der Abschaltung von "BasicAuth" funktionieren. gegen Exchange Online mit POP3/IMAP4 wird das schwer. Also gilt es Alternativen zu suchen. Ich stelle hier mal ein ein paar kurz vor.

  • Exchange OnPremises
    Solange Sie noch Exchange Hybrid sind und einen lokalen Exchange Server betreiben, könnten Sie die fraglichen Postfächer weiterhin "OnPremises" betreiben. Damit kann ihre alte POP3/IMAP4-Applikation, die vermutlich auch nicht in der Cloud läuft, auf das Postfach weiter zugreifen
  • Lokaler IMAP4-Subdomain
    Der Betrieb eines Exchange Servers ist natürlich aufwändig. Wenn es nur um ein "durchlaufendes Postfach" geht, dann können Sie auch in der Nähe der Applikation einen kleinen IMAP4-Server, wie z.B. hMailServer, betreiben. Der kann dann eine Subdomain haben wie "app1.uclabor.de" und in Exchange gibt es einen Kontakt, der alle Mails an app@uclabor.de an mailbox@app.uclabor.de über einen passenden Send-Connector weiter gibt. Dann kann die Applikation die Daten auch wieder abrufen.
  • Alternative Wege
    Wenn die App nicht auf EWS/Graph umgestellt werden kann, dann könnte Sie vielleicht so angepasst werden, dass diese stattdessen Dateien in einem Verzeichnis einliest. Dann können Sie sogar den einfachen Windows SMTP-Server nutzen. Dieser kann auch Mails für einen Domain annehmen und als Dateien im RFC822-Format ablegen. zudem kann auch auch Mails per Dateischnittstelle FILE - Pickup Verzeichnis Nachrichten zum Versand annehmen
  • IMAP4->EWS/Graph-Proxy
    Mit DaveMail (http://davmail.sourceforge.net/advanced.html) gibt es schon länger eine Brücke, mit der IMAP4-Programme weiterhin auf andere Dienste zugreifen können, die nur per EWS/WebDAV erreichbar sind. Aktuell funktioniert der Proxy noch nicht mit OAUTH2 aber könnte vielleicht weiter entwickelt werden. Leider scheint aber Exchange 2010 die letzte Exchange Version zu sein.
  • Eigener Proxy
    IMAP4 ist ja kein besonders kniffliges Protokoll und wenn die alte App einfach nur per TCP-Connection auf einen lokalen IMAP-Server geht, der dann seinerseits gegen Graph die Daten liefert, könne so eine Lösung dann auch möglich sein.

Der Weg, die Mails gar nicht mehr in einer Exchange Online-Mailbox abzulegen, sondern an einen eigenen für die jeweilige Applikation angepassten IMAP4-Server per SMTP zuzustellen, hat aus meiner Sicht den größten Charme.

Prüfen

Ehe Sie nun aber ihre OAUTH-taugliche Applikation gegen Outlook.Office365.com per POP3 oder IMAP4 konfigurieren, können Sie ja mal schauen, welche Authentifizierungsverfahren die Gegenseite ihnen anbietet. Bei Thunderbird habe ich daher eine Verbindung per "IMAP:outlook.office36.com:143" mit konfiguriertem OAUTH2 gestartet. Thunderbird fragt direkt die "Capability" ab

Hier kann man allerdinge OAUTH nicht sehen, denn Microsoft wird dieses Verfahren sicher nicht ohne Verschlüsselung anbieten. Bei OAUTH wird ja das Zugriffstoken direkt übertragen und könnte dann mitgelesen werden. Verschlüsselung ist also Pflicht. Erst dann sollten Sie auch das Verb "AUTH=XOAUTH2" bzw. "AUTH=XOAUTH" ausgeliefert bekommen. Das könnte dann so aussehen

C: 01 CAPABILITY
S: * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA XLISTCHILDREN XYZZY SASL-IR AUTH=XOAUTH2 AUTH=XOAUTH
S: 01 OK Completed
C: 02 AUTHENTICATE XOAUTH2 <base64token==>
S: 02 OK Success
...

Per WireShark können Sie diese Kommunikation leider nicht mitschneiden, wenn Sie per TLS verschlüsselt ist.

Basic abschalten

Sie müssen aber nicht erst warten, bis Microsoft global die Nutzung on Basic Authentication abschaltet. Diese Einstellungen können Sie pro Benutzer in der Exchange PowerShell aktivieren. So können Sie schon heute bei all den Benutzer die Anmeldung per BasicAuth von Vorneherein unterbinden. Zuerst legen wir dazu eine Authentifizierungsrichtlinie an.

New-AuthenticationPolicy `
   -Name "Block Basic Auth" `
   -BlockLegacyAuthImap `
   -BlockLegacyAuthPop

Das Commandlet kennt noch weitere Einstellungen aber ich habe mich hier auf POP3 und IMAP4 beschränkt

Im zweiten Schritt wird die Policy dann an die entsprechenden Postfächer zugewiesen

Set-User `
   -Identity <upn> `
   -AuthenticationPolicy "Block Basic Auth"

Die Richtlinie kann leider nicht über LDAP-Attribute oder Gruppenmitgliedschaften sondern nur pro Benutzer zugewiesen werden. Wenn Sie mehrere Benutzer bearbeiten wollen, dann können Sie mit PowerShell natürlich eine Schleife programmieren.

Eine elegante Methode ist aber auch die Negierung der Logik. Es gibt eine "Default Authentifizierungpolicy", die für alle Benutzer gilt, die keine abweichende individuelle Richtlinie nutzen. Sie können so BasicAuth generell abschalten und dann für die Ausnahmen wieder zulassen.

# Zwei Policies anlegen
New-AuthenticationPolicy `
   -Name "Block Basic Auth" `
   -BlockLegacyAuthImap `
   -BlockLegacyAuthPop

New-AuthenticationPolicy `
   -Name "Allow Basic Auth" `
   -AllowLegacyAuthImap `
   -AllowLegacyAuthPop

# Ausnahmen zuweisen
Set-User `
   -identity <pop3username> `
   -Authenticationpolicy "Allow Basic Auth"

# Default zuweisen
Set-OrganizationConfig `
   -DefaultAuthenticationPolicy "Block Basic Auth"

Weitere Links