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"