HowTo - The never Expiring Secret für eure App Registrierung

Jaspal Victor 10. October 2026 1 Kommentar 40 Aufrufe

Im Azure Portal laufen Secrets einer App Registrierung nach maximal 2 Jahren ab. Mit PowerShell und dem Microsoft Graph SDK erstellt ihr ein Secret mit 99 Jahren Laufzeit - inklusive Disclaimer.

← Zurück zum Blog

Okay, kleiner Disclaimer gleich zu Beginn: Der folgende Blogeintrag sollte NICHT als Security Best Practice herangezogen werden. Dennoch hat er seine Berechtigung, denn unter gewissen Umständen kann die folgende Anleitung richtig hilfreich sein.

Worum geht es konkret?

Wer in der Azure Cloud unterwegs ist, ist sicher schon mal über sogenannte "App Registrierungen" gestolpert. Im Grunde genommen sind App Registrierungen nichts anderes als die "Identität" einer Anwendung. (Wie sich das von Managed Identities unterscheidet, schauen wir uns in einem eigenen Blogpost an.)

App Registrierungen in Microsoft Entra ID im Azure Portal

Einer App Registrierung könnt ihr ein Secret zuweisen bzw. direkt über das Azure Portal eines erstellen. In Kombination mit den vergebenen API Berechtigungen kann diese App Registrierung dann verwendet werden, um auf Services zuzugreifen. Ein Beispiel aus dem Dynamics 365 Kontext: Dort wird so eine App Registrierung gerne als Anwendungsbenutzer (Application User) angelegt, über den Integrationen auf Dataverse zugreifen.

Der Haken

Beim Anlegen eines neuen Secrets im Portal liegt das Ablaufdatum maximal 2 Jahre (24 Monate) in der Zukunft:

Neuer geheimer Clientschlüssel im Azure Portal mit maximal 24 Monaten Ablaufzeit

Aus Security Sicht reicht das meistens auch völlig aus - bei häufigeren Key Rotationen sollte die Laufzeit sogar kürzer sein, je nach Unternehmensrichtlinie und Compliance.

In der Praxis gibt es aber immer wieder Fälle, in denen ein "Never Ending Secret" hilfreich wäre und den Wartungsaufwand reduziert. Achtung, nochmal Disclaimer: Mittlerweile gibt es Managed Identities, die genau solche Fälle adressieren. Wenn eure Anwendung oder eure Services aber noch auf klassische App Registrierungen setzen, könnt ihr mit folgendem Guide ein Secret mit sehr langer Laufzeit erstellen.

Los geht's!

1. Voraussetzungen

Ihr braucht das Microsoft Graph PowerShell SDK. Installiert ist es ganz einfach mit:

Install-Module Microsoft.Graph -Scope CurrentUser

2. Mit Microsoft Graph verbinden

Connect-MgGraph -Scopes "Application.ReadWrite.All"

Damit verbindet ihr euch per PowerShell mit eurem Tenant. Achtung: Der Scope Application.ReadWrite.All braucht einen Admin Consent. Habt ihr keine Admin Rechte, muss euer Global Admin bzw. Application Administrator ran.

3. Objekt Id der App Registrierung kopieren

Kopiert euch aus eurer App Registrierung die Objekt Id raus. WICHTIG: Nicht die Client Id (Anwendungs-ID), sondern die Objekt Id, wie im Screenshot zu sehen:

Übersicht der App Registrierung mit markierter Objekt-ID

4. Variablen setzen

Laufzeit und Anzeigename des Secrets könnt ihr selbst festlegen:

$ApplicationObjectId = "00000000-0000-0000-0000-000000000000"
$SecretName = "secret web app 2026"
$EndDate = (Get-Date).AddYears(99)

In diesem Fall läuft das Secret erst in 99 Jahren ab. ;)

5. Secret erstellen

Jetzt kommt das eigentliche Skript. Hier gleich in der vollständigen Version inklusive Verbindung und Variablen, so könnt ihr es in einem Rutsch ausführen:

Connect-MgGraph -Scopes "Application.ReadWrite.All"

$ApplicationObjectId = "00000000-0000-0000-0000-000000000000"
$SecretName = "secret web app 2026"
$EndDate = (Get-Date).AddYears(99)

$params = @{
    passwordCredential = @{
        displayName = $SecretName
        endDateTime = $EndDate
    }
}

$Credential = Add-MgApplicationPassword `
    -ApplicationId $ApplicationObjectId `
    -BodyParameter $params

Write-Host ""
Write-Host "============================================================"
Write-Host "Microsoft Graph Application Password wurde erstellt"
Write-Host "============================================================"
Write-Host ""
Write-Host "Application Object ID:"
Write-Host $ApplicationObjectId
Write-Host ""
Write-Host "Secret Name:"
Write-Host $SecretName
Write-Host ""
Write-Host "KeyId:"
Write-Host $Credential.KeyId
Write-Host ""
Write-Host "EndDateTime:"
Write-Host $Credential.EndDateTime
Write-Host ""
Write-Host "SECRET VALUE - NUR JETZT SICHTBAR:"
Write-Host $Credential.SecretText
Write-Host ""

$Output = @"
ApplicationObjectId=$ApplicationObjectId
KeyId=$($Credential.KeyId)
SecretValue=$($Credential.SecretText)
SecretEndDate=$($Credential.EndDateTime)
"@

$Output | Set-Clipboard

Write-Host "============================================================"
Write-Host "Zum Kopieren:"
Write-Host "============================================================"
Write-Host $Output
Write-Host ""
Write-Host "Die wichtigsten Werte wurden auch in die Zwischenablage kopiert."
Write-Host ""
Write-Host "Achtung: Der Secret Value kann später nicht erneut angezeigt werden."

Das Skript erstellt das Secret mit der angegebenen Laufzeit, gibt alle wichtigen Werte aus und kopiert sie zusätzlich in die Zwischenablage.

Kleiner Security Hinweis: Das Secret landet damit im Klartext in eurer Zwischenablage. Wenn ihr unter Windows den Zwischenablageverlauf (Win + V) aktiviert habt, bleibt es dort gespeichert. Legt das Secret also direkt in euren Key Vault und löscht danach den Verlauf.

Achtung: App Management Policies

Manche Tenants haben Richtlinien zur Anwendungsverwaltung (App Management Policies) aktiv, die die maximale Laufzeit von Secrets begrenzen. In diesem Fall bricht Add-MgApplicationPassword mit einem Fehler ab - und das ist dann auch so gewollt. Hier hilft nur das Gespräch mit eurem Security Team.

Das Ergebnis

Bei Erfolg seht ihr in eurem PowerShell Fenster folgende Ausgabe, inklusive dem Secret selbst:

PowerShell Ausgabe nach erfolgreicher Erstellung des Secrets

Und im Azure Portal seht ihr dann unter eurer App Registrierung das neue Secret:

Neues Secret in der App Registrierung mit Ablaufdatum in 99 Jahren

Die Gültigkeit ist bis zum 28.10.2125 angegeben. Zack! Das sollte für ein paar Release Zyklen reichen. ;)

Fazit

Mit ein paar Zeilen PowerShell und dem Microsoft Graph SDK erstellt ihr ein Secret, das deutlich länger als 2 Jahre gültig ist. Aber bitte bewusst einsetzen: Ein Secret, das nie abläuft, ist auch ein Secret, das bei einem Leak nie von selbst ungültig wird. Wo immer möglich, sind Managed Identities die bessere Wahl.

Der Text dieses Beitrags wurde mithilfe von KI sprachlich überarbeitet und korrigiert.

Dieser Beitrag wurde 40 mal aufgerufen – Wie findest du diesen Beitrag?

Kommentare

Momo
Momo 30. Oct 2026

Coole Sache! Danke für den Beitrag :-)

Kommentar hinterlassen

Kommentare werden moderiert und bei Regelverstößen oder Missbrauch ausnahmslos entfernt.