ado/helper/public/getAccessToken.ps1
function Get-AdoAccessToken { <# .SYNOPSIS Get secure access token for Azure DevOps service principal. .DESCRIPTION The function gets an access token for the Azure DevOps service principal using the current Azure context or a specified tenant ID. .PARAMETER TenantId The tenant ID to use for retrieving the access token. If not specified, the tenant ID from the current Azure context is used. .OUTPUTS System.Security.SecureString .EXAMPLE Get-AdoAccessToken This example retrieves an access token for Azure DevOps using the tenant ID from the current Azure context. .EXAMPLE Get-AdoAccessToken -TenantId "00000000-0000-0000-0000-000000000000" This example retrieves an access token for Azure DevOps using the specified tenant ID. .NOTES Please make sure the context matches the current Azure environment. You may refer to the value of `(Get-AzContext).Environment`. #> [CmdletBinding()] [OutputType([System.Security.SecureString])] param ( [Parameter()] [string]$TenantId = '' ) begin { Write-Debug ('{0} entered' -f $MyInvocation.MyCommand) } process { try { if (-not $TenantId) { # Get the current Azure context $ctx = Get-AzContext if ($null -eq $ctx) { throw 'Azure context is not available.' } else { $TenantId = $ctx.Tenant.Id } } Write-Verbose ('Using TenantId: {0}' -f $TenantId) # Don't change this. This is the immutable application ID of the Azure DevOps service principal. $principalAppId = '499b84ac-1321-427f-aa17-267ca6975798' Write-Verbose ('Using Azure DevOps AppId: {0}' -f $principalAppId) # Get the access token for the Azure DevOps service principal $azAccessToken = Get-AzAccessToken -ResourceUrl $principalAppId -TenantId ($TenantId) if ($null -eq $azAccessToken) { return $null } # Convert token part to SecureString $tokenAsSecureString = $azAccessToken.Token | ConvertTo-SecureString -AsPlainText -Force Write-Verbose ('Retrieved access token successfully.') return $tokenAsSecureString } catch { throw $_ } } end { Write-Debug ('{0} exited' -f $MyInvocation.MyCommand) } } |