Refresh Token – Skript zum Aktualisieren des Tokens
Unten findest du das Skript, das ich verwende, um den RefreshToken zu aktualisieren.
Das Skript ist in Azure Automation in RunBooks implementiert. Er verbindet sich mit einem anderen Microsoft365 Tenant über Azure App Registrations. Die ClientID, das Passwort und die alten RefreshToken-Verbindungsdaten werden lokal im KeyVault gespeichert.
Wenn das Skript korrekt ausgeführt wird, wird die neue Version von RefreshToken in KeyVault aktualisiert.
Ich beschreibe hier nicht die gesamte Konfiguration, die erforderlich ist, um das Skript zu verwenden, aber Punkte wie:
- Azure Automation
- RunBooks
- PowerShell
- App Registrations
- Azure Key Vault
Param
(
[Parameter(Mandatory = $true)]
[string]$CustomerName
)
## Connect to Azure AD by Managed Identity
Connect-AzAccount -Identity
## Your Azure Tenant Name
$Conn = Get-AutomationConnection -Name $CustomerName
##Your Azure Tenant ID
$tenantid = $Conn.TenantID
##Your App Registration Details
$clientId = $Conn.ApplicationID
$clientSecret = Get-AzKeyVaultSecret -VaultName "SecretManager" -Name $CustomerName -AsPlainText
$clientSecretSecure = ConvertTo-SecureString -String $clientSecret -AsPlainText -Force
$refreshToken = Get-AzKeyVaultSecret -VaultName "SecretManager" -Name "$($CustomerName)token" -AsPlainText
$credential = New-Object System.Management.Automation.PSCredential($clientId, $clientSecretSecure)
$aadGraphToken = New-PartnerAccessToken -ApplicationId $clientId -Credential $credential -RefreshToken $refreshToken -Scopes 'https://graph.windows.net/.default' -ServicePrincipal -Tenant $tenantid
$refreshTokenNew = $aadGraphToken.RefreshToken
## Update a new Token
$Secret = ConvertTo-SecureString -String $refreshTokenNew -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName "SecretManager" -Name "$($CustomerName)token" -SecretValue $Secret