69 lines
2.2 KiB
PowerShell
69 lines
2.2 KiB
PowerShell
function Get-AuthHeader {
|
|
<#
|
|
.SYNOPSIS
|
|
Returns an HTTP Authentication/Authorization Header
|
|
|
|
.PARAMETER ApiUserUsername
|
|
TeamCity User Username to use for building a Basic Auth HTTP Header
|
|
|
|
.PARAMETER ApiUserPassword
|
|
TeamCity User Password to use for building a Basic Auth HTTP Header
|
|
|
|
.PARAMETER BearerToken
|
|
A Bearer Token to use for building a Bearer Token Auth HTTP Header
|
|
|
|
.PARAMETER GetBearerToken
|
|
Call Get-BearerToken function
|
|
|
|
.PARAMETER TokenFilePath
|
|
Path(optional) to file containing the bearer token to use when calling Get-BearerToken
|
|
|
|
#>
|
|
[CmdletBinding()]
|
|
[OutputType([string])]
|
|
param(
|
|
[Parameter(Mandatory = $false)]
|
|
[string]$ApiUserUsername = $null,
|
|
[Parameter(Mandatory = $false)]
|
|
[string]$ApiUserPassword = $null,
|
|
[Parameter(Mandatory = $false)]
|
|
[string]$BearerToken = $null,
|
|
[Parameter(Mandatory = $false)]
|
|
[switch]$GetBearerToken,
|
|
[Parameter(Mandatory = $false)]
|
|
[Alias("Path")]
|
|
[string]$TokenFilePath = $null
|
|
)
|
|
$logLead = Get-LogLeadName
|
|
|
|
$authHeaderPatternBearer = "Bearer {0}"
|
|
if ($GetBearerToken) {
|
|
Write-Host "$logLead : Getting token"
|
|
$splat = @{}
|
|
if ($null -ne $TokenFilePath) {
|
|
Write-Host "$logLead : Passing user supplied path - $TokenFilePath"
|
|
$splat.TokenFilePath = $TokenFilePath
|
|
}
|
|
$gotBearerToken = Get-BearerToken @splat
|
|
$authHeaderValue = ($authHeaderPatternBearer -f $gotBearerToken)
|
|
|
|
} elseif ([string]::IsNullOrEmpty($ApiUserUsername) -or [string]::IsNullOrEmpty($ApiUserPassword)) {
|
|
Write-Host "$logLead : Using supplied token"
|
|
$authHeaderValue = ($authHeaderPatternBearer -f $BearerToken)
|
|
|
|
} else {
|
|
Write-Host "$logLead : Using auth pair"
|
|
$authorizationPair = "$($apiUserUsername):$($apiUserPassword)"
|
|
$encodedCredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($authorizationPair))
|
|
$authHeaderValue = "Basic $encodedCredentials"
|
|
|
|
}
|
|
|
|
$headers = @{
|
|
Authorization = $authHeaderValue
|
|
Accept = "application/json"
|
|
}
|
|
Write-Host "$logLead : Header creation complete"
|
|
return $headers
|
|
}
|