Exchange Online PowerShell V2 and Modern Auth with Application in AzureAD (Step-by-step)

Hallo zusammen,

Vor ein paar Tagen hat Microsoft auf dem Exchange Team Blog erklärt, wie man mit sich mit Modern Auth und dem Exchange Online PowerShell V2 Module authentifizieren kann. Dies benötigt jedoch die Preview vom Exchange Online PowerShell V2 Module.

Modern Auth and Unattended Scripts in Exchange Online PowerShell V2
https://techcommunity.microsoft.com/t5/exchange-team-blog/modern-auth-and-unattended-scripts-in-exchange-online-powershell/ba-p/1497387

App-only authentication for unattended scripts in the EXO V2 module
https://docs.microsoft.com/en-us/powershell/exchange/app-only-auth-powershell-v2?view=exchange-ps

A first look at Certificate-Based Authentication for Exchange Online Remote PowerShell
https://www.quadrotech-it.com/blog/certificate-based-authentication-for-exchange-online-remote-powershell/

Als erstes muss eine Applikation im Azure AD registriert werden.

Dort nur einen Namen vergeben, den Rest so belassen

Am besten merkt man sich dann gleich die Application ID

Nun müssen der Applikation noch Berechtigungen vergeben werden.

Hier einfach "Exchange" auswählen

Nun muss das Recht "Exchange.ManageAsApp" ausgewählt werden

Danach muss der Admin diese Rechte bestätigen (Admin Consent)

Hier einfach auf "Yes" klicken um den Admin Consent zu erteilen (Braucht Global Admin)

Und so sollte es dann aussehen.

Nun muss man ein SelfSignedCertificate erstellen

$cert=New-SelfSignedCertificate -Subject "CN=ExOPowershell" -CertStoreLocation "Cert:\CurrentUser\My"  -KeyExportPolicy Exportable -KeySpec Signature

Danach kann die Zertifikatskonsole gestartet werden

certmgr.msc

Das Zertifikat muss nun exportiert werden

Um eine weitere Art der Verbindung zu zeigen, mache ich auch einen Export mit privatem Schlüssel (*.pfx Datei)

Das Zertifikat muss nun in der Azure AD Applikation unter "Certificates & secrets" raufgeladen werden.

Das *.cer File auswählen und hochladen

Danach sieht es so aus.

Nun muss der Applikation noch eine Rolle zugeteilt werden - ich nehme hier die Exchange Administrator Rolle

Dort auf "Add assignments" klicken

Und die Application ID einfügen

Danach ist das Service Principal der Applikation in der Rolle Exchange Administrators hinzugefügt worden.

Variante 1:

Verbinden über den Certificate Thumbprint (das Zertifikat muss beim Benutzer unter MyCertificates installiert sein) und die ApplicationID

Connect-ExchangeOnline -CertificateThumbprint "cf1dcd32e78b6ccc9a89be93b31a98a30fe7f760" -AppID "f38d26a7-740e-425f-aef5-2da3f3d595db" -Organization "icewolfch.onmicrosoft.com"

Variante 2:

Mit dem *.pfx und dem Zertifikatspasswort sowie Application ID verbinden

$CertPassword = ConvertTo-SecureString "DemoPassword!" -AsPlainText -Force
Connect-ExchangeOnline -CertificateFilePath "E:\Scripting\ExOPowershell.pfx" -CertificatePassword $CertPassword -AppID "f38d26a7-740e-425f-aef5-2da3f3d595db" -Organization "icewolfch.onmicrosoft.com"

Grüsse
Andres Bohren