Wie im September 2021 angekündigt hat Microsoft begonnen veraltete Basic Auth Protokolle im Tenant zu deaktivieren, sofern diese in letzter Zeit nicht eingesetzt wurden. Im Message Center wird vorab informiert. Über Microsoft Graph können die Ankündigungen automatisiert ausgewertet werden.
Ab 1. Oktober 2022 unterstützt Microsoft für Exchange Online keine veralteten Basic Authentication Protokolle mehr, mit Ausnahme von SMTP.
Folgende Protokolle sind ab 1. Oktober betroffen:
- POP
- IMAP
- Exchange ActiveSync
- Exchange Remote PowerShell
- Exchange Web Services
- MAPI
- RPC
- OAB
Im September 2021 informierte Microsoft ausserdem sie beginnen im Q1/2022 Basic Auth Protokolle vorab zu deaktivieren, sofern sie im Tenant noch aktiv sind und in letzter Zeit kein Zugriff darüber stattgefunden hat. Eine Information erfolgt im Message Center des betroffenen Tenants.
In meinem Tenant erhalte ich seit Ende Februar die Art von Nachrichten für POP3, weiters für Remote PowerShell. Im Gegensatz zur Ankündigung von September 2021 ist es keine 30 Tage Vorabinformation, es wurde reduziert auf 7 Tage. Es sind jeweils zwei Nachrichten.
- 7 Tage vor dem Zeitpunkt eine Information über die bevorstehende Deaktivierung.
- Nach der Umsetzung eine Information das Protokoll wurde deaktiviert.
Message Center Nachrichten lassen sich über Microsoft Graph auswerten. So können die Nachrichten automatisiert ausgewertet und Informationen über Basic Auth gefiltert werden.
Für die Auswertung über Microsoft Graph ist wie üblich eine Azure AD App erforderlich. Hier eine Hilfe zur Erstellung. Für die API ist die Berechtigung ServiceMessage.Read.All ausreichend.
- Über mein Command Get-TAMSAuthToken hole ich mir einen Token zur Authentifizierung.
Import-module TAMPowerShell
$AuthHeader = Get-TAMSAuthToken -AppID [AppID] -ClientSecret [ClientSecret] -Tenantname "[Tenantname].onmicrosoft.com" -API Graph -PermissionType Application -ReturnAuthHeader
- Über die serviceAnnouncement messages API frage ich alle noch verfügbaren Nachrichten im Message Center ab. Dabei ist auf 3 Punkte zu achten:
- Das Message Center kann via API die Nachrichten der rund letzten 11 Monate zurückgeben.
- Ohne Filter findet ein Paging statt. Graph gibt dadurch zuerst nur 100 Nachrichten zurück. Ohne Filter muss die Abfrage wiederholt werden bis es alle Nachrichten inkludiert.
- Die API unterstützt Graph Filter. Bei einer Abfrage kann eine Vorfilterung stattfinden und Graph gibt nur die gefilterten Ergebnisse zurück.
- Ohne Graph Filter
Ohne Filter wird das Ergebnis lokal nach der Abfrage gefiltert. Message Center Nachrichten über Anpassungen zu Basic Auth betitelt Microsoft mit dem Begriff “Basic Authentication”. Dadurch ist eine Filterung möglich. In meinem Beispiel suche ich alle Nachrichten nach dem 1. Februar 2022. Ich setze einen Filter auf den Titel und das Datum der letzten Modifizierung.
$Url = "https://graph.microsoft.com/v1.0/admin/serviceAnnouncement/messages"
$Results = Invoke-RestMethod -Method Get -Headers $AuthHeader -Uri $Url -ContentType 'application/json'
$Results = Get-TAMSGraphAllResults -Results $Results -AuthHeader $AuthHeader
$FilterDate = get-date "1.2.2022 00:00"
$Results | ?{$_.title -like "*basic auth*" -and $_.lastModifiedDateTime -ge $FilterDate } | sort lastModifiedDateTime -Descending | select id,title,lastModifiedDateTime,Body
Als Ergebnis gibt es mir 3 Nachrichten zurück.
- Am 25.02 eine Ankündigung über die Deaktivierung von POP3 in 7 Tagen.
- Am 05.03. eine Information über die Deaktivierung von POP3.
- Am 05.03. eine Ankündigung über die Deaktivierung von Remote PowerShell in 7 Tagen.
- Mit Graph Filter
Mit Filter wird das Ergebnis während der Abfrage gefiltert. Da es max. 3 Ergebnisse sein sollten wird kein Paging stattfinden. Message Center Nachrichten über Anpassungen zu Basic Auth betitelt Microsoft mit dem Begriff “Basic Authentication”. Dadurch ist eine Filterung möglich. In meinem Beispiel filtere ich Nachrichten mit dem Titel Basic Auth und der letzten Modifizierungen nach dem 1. Februar 2022. Bei Graph Filter ist die Formatierung für das Datum zu beachten.
$FilterDate = (Get-Date "1.2.2022 00:00" -Format u).Replace(" ","T")
$Url = "https://graph.microsoft.com/v1.0/admin/serviceAnnouncement/messages?`$filter=(contains(title,'Basic Auth') AND lastModifiedDateTime ge $FilterDate)&`$orderby=lastModifiedDateTime%20desc"
$Results = Invoke-RestMethod -Method Get -Headers $AuthHeader -Uri $Url -ContentType 'application/json'
$Results.value | select id,title,lastModifiedDateTime,Body
Das Ergebnis ist identisch zur Abfrage in Schritt 3.