Automatisierte Authentifikation gegen M365 aus Powershell mit Hilfe einer Azure Application.
In diesem Beispiel soll der Login verwendet werden, um im Rahmen eines Benutzererstellungs-Skript Änderungen an einem, in Exchange Online gehosteten Postfach, vorzunehmen.
Zertifikat generieren
Öffnen Sie Powershell auf dem System, auf dem das Script später ausgeführt werden soll.
Führen Sie dort anschließend diesen Befehl aus:
# Konfiguration
$subject = "CN=Benutzererstellung"
$store = "Cert:\LocalMachine\My"
$CertFolder = "C:\_it-configuration-guide\Zertifikate"
$years = 15
# Zertifikat erstellen (4096 Bit, 15 Jahre gültig, exportierbar, systemweit)
$cert = New-SelfSignedCertificate `
-Subject $subject `
-CertStoreLocation $store `
-KeyExportPolicy NonExportable `
-KeySpec Signature `
-KeyLength 4096 `
-NotAfter (Get-Date).AddYears($years) `
-FriendlyName "Benutzererstellung"
#Create Folder for Cert storage
Write-Host -ForegroundColor Yellow "Checking if Cert-Folder for file exists"
if (!(Test-Path -Path $CertFolder)) {
Write-Host -ForegroundColor Yellow "Folder does not exist. Creating $CertFolder"
New-Item -ItemType Directory -Path $CertFolder
}
else {
Write-Host -ForegroundColor Yellow "Folder $CertFolder already exists. Skip folder creation"
}
# Zertifikat (ohne privaten Schlüssel) exportieren für Azure App-Registrierung
Export-Certificate -Cert $cert -FilePath "$CertFolder\Benutzererstellung.cer"
# Thumbprint holen
$thumb = $cert.Thumbprint
Write-Host "Der Zertifikats-Thumbprint lautet: $thumb"
Kopieren oder notieren Sie aus der Ausgabe im markierten Bereich den Thumbprint, da er später benötigt wird:

App in Azure erstellen
Öffnen Sie das Microsoft Entra admin center mit einem Admin-Konto.
Navigieren Sie dort zu Identity → Applications → App registrations und beginnen Sie eine neue Registrierung:

Füllen Sie die Registrierungsinformationen mit den Folgenden Informationen aus:

Name: Wie Ihre App heißen soll (am Besten gleich wie das PowerShell Skript, für die sie verwendet wird)
Supported account types: Accounts in this organizational directory only
Redirect URI: muss leer bleiben
Anschliessend mit Register registrieren
Notieren Sie sich anschließend die angezeigte Application ID:

Nun zu Certificates & secrets → Certificates wechseln und dort Zertifikat hochladen (gespeichert unter C:\_it-configuration-guide\Zertifikate\Benutzererstellung.cer)

Als Description können Sie nun eine Bezeichnung wählen, mit der Sie das Zertifikat eindeutig identifizieren können. Hier zum Beispiel „[App-Name]_[HOSTNAME]_[Ablaufdatum]“. Bestätigen Sie den Import anschließend mit Add.
Wechseln Sie danach zu API permissions und fügen Sie dort eine neue hinzu:

Wählen Sie nun die benötigten Rechte für die Applikation aus.
Für dieses Beispiel: Office 365 Exchange Online unter APIs in my organization users suchen und auswählen.
Dort können Sie dann Application permissions → Exchange-ManageAsApp auswählen und unten bestätigen

Nun müssen Sie nur noch die Berechtigungen noch als Administrator bestätigen, damit alle Status “Granted” sind:

So sollte es nach der Bestätigung aussehen:

ExchangeOnline Berechtigungen anpassen
Im Microsoft Entra admin center unter Roles & admins nach Exchange Administrators suchen und öffnen:

Dort müssen Sie dann unter Assignments die eben erstellte Applikation hinzufügen.
Login in Powershell nutzen
Nun kann der Login aus dem Powershell-Skript wie folgt durchgeführt werden:
Connect-ExchangeOnline -AppId "<Client-ID>" `
-CertificateThumbprint "<Thumbprint>" `
-Organization "<tenant>.onmicrosoft.com"