Modules/AzureDevOpsDsc.Common/Api/Functions/Private/Authentication/Certificate/Update-AzServicePrincipalCertificate.ps1
|
<#
.SYNOPSIS Refreshes the certificate-based service principal Bearer token when it has expired. .DESCRIPTION Reads the TenantId, ClientId, and certificate credentials from the current global token object, re-acquires a fresh token via Get-AzServicePrincipalCertificateToken, and updates the global variable. Called automatically by Add-AuthenticationHTTPHeader. #> Function Update-AzServicePrincipalCertificate { if ($null -eq $Global:DSCAZDO_OrganizationName) { throw "[Update-AzServicePrincipalCertificate] Organization Name is not set. Please run 'New-AzDoAuthenticationProvider -OrganizationName <OrganizationName>'" } $currentToken = $Global:DSCAZDO_AuthenticationToken if ($null -eq $currentToken) { throw "[Update-AzServicePrincipalCertificate] No existing authentication token found. Cannot refresh." } $tenantId = $currentToken.tenantId $clientId = $currentToken.clientId Write-Verbose "[Update-AzServicePrincipalCertificate] Refreshing certificate token for tenant '$tenantId', client '$clientId'." $Global:DSCAZDO_AuthenticationToken = $null if (-not [String]::IsNullOrEmpty($currentToken.certificateThumbprint)) { $Global:DSCAZDO_AuthenticationToken = Get-AzServicePrincipalCertificateToken ` -OrganizationName $Global:DSCAZDO_OrganizationName ` -TenantId $tenantId ` -ClientId $clientId ` -CertificateThumbprint $currentToken.certificateThumbprint } else { $Global:DSCAZDO_AuthenticationToken = Get-AzServicePrincipalCertificateToken ` -OrganizationName $Global:DSCAZDO_OrganizationName ` -TenantId $tenantId ` -ClientId $clientId ` -CertificatePath $currentToken.certificatePath ` -CertificatePassword ([SecureString]$currentToken.certificatePassword) } return $Global:DSCAZDO_AuthenticationToken } |