Skip to content

Commit 1072080

Browse files
committed
Add function Get-GitHubActionsOidcToken
1 parent 0fbc95e commit 1072080

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ Import-Module -Name 'hugoalh.GitHubActionsToolkit' -Scope 'Local'
5555
- `Exit-GitHubActionsLogGroup`
5656
- `Get-GitHubActionsInput`
5757
- `Get-GitHubActionsIsDebug`
58+
- `Get-GitHubActionsOidcToken`
5859
- `Get-GitHubActionsState`
5960
- `Get-GitHubActionsStepSummary`
6061
- `Get-GitHubActionsWebhookEventPayload`

hugoalh.GitHubActionsToolkit/hugoalh.GitHubActionsToolkit.psd1

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
'Exit-GitHubActionsLogGroup',
7575
'Get-GitHubActionsInput',
7676
'Get-GitHubActionsIsDebug',
77+
'Get-GitHubActionsOidcToken',
7778
'Get-GitHubActionsState',
7879
'Get-GitHubActionsStepSummary',
7980
'Get-GitHubActionsWebhookEventPayload',
@@ -181,6 +182,7 @@
181182
'Get-GHActionsEvent',
182183
'Get-GHActionsInput',
183184
'Get-GHActionsIsDebug',
185+
'Get-GHActionsOidcToken',
184186
'Get-GHActionsPayload',
185187
'Get-GHActionsState',
186188
'Get-GHActionsStepSummary',

hugoalh.GitHubActionsToolkit/hugoalh.GitHubActionsToolkit.psm1

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,55 @@ function Get-GitHubActionsIsDebug {
668668
Set-Alias -Name 'Get-GHActionsIsDebug' -Value 'Get-GitHubActionsIsDebug' -Option 'ReadOnly' -Scope 'Local'
669669
<#
670670
.SYNOPSIS
671+
GitHub Actions - Get OIDC Token
672+
.DESCRIPTION
673+
Interact with the GitHub OIDC provider and get a JWT ID token which would help to get access token from third party cloud providers.
674+
.PARAMETER Audience
675+
Audience.
676+
.OUTPUTS
677+
String
678+
#>
679+
function Get-GitHubActionsOidcToken {
680+
[CmdletBinding(HelpUri = 'https://github.com/hugoalh-studio/ghactions-toolkit-powershell/wiki/api_function_get-githubactionsoidctoken#Get-GitHubActionsOidcToken')]
681+
[OutputType([string])]
682+
param (
683+
[Parameter(Position = 0)][AllowNull()][string]$Audience
684+
)
685+
[string]$OidcTokenRequestToken = $env:ACTIONS_ID_TOKEN_REQUEST_TOKEN
686+
[string]$OidcTokenRequestURL = $env:ACTIONS_ID_TOKEN_REQUEST_URL
687+
if (
688+
$null -eq $OidcTokenRequestToken -or
689+
$OidcTokenRequestToken.Length -eq 0
690+
) {
691+
return Write-Error -Message 'Unable to get GitHub Actions OIDC token request token!' -Category 'ResourceUnavailable'
692+
}
693+
Add-GitHubActionsSecretMask -Value $OidcTokenRequestToken
694+
if (
695+
$null -eq $OidcTokenRequestURL -or
696+
$OidcTokenRequestURL.Length -eq 0
697+
) {
698+
return Write-Error -Message 'Unable to get GitHub Actions OIDC token request URL!' -Category 'ResourceUnavailable'
699+
}
700+
if ($null -ne $Audience -and $Audience.Length -gt 0) {
701+
Add-GitHubActionsSecretMask -Value $Audience
702+
[string]$AudienceEncode = [System.Web.HttpUtility]::UrlEncode($Audience)
703+
Add-GitHubActionsSecretMask -Value $AudienceEncode
704+
$OidcTokenRequestURL += "&audience=$AudienceEncode"
705+
}
706+
try {
707+
[pscustomobject]$Response = Invoke-WebRequest -Uri $OidcTokenRequestURL -UseBasicParsing -UserAgent 'actions/oidc-client' -Headers @{
708+
Authorization = "Bearer $OidcTokenRequestToken"
709+
} -MaximumRedirection 1 -MaximumRetryCount 10 -RetryIntervalSec 10 -Method 'Get'
710+
[ValidateNotNullOrEmpty()][string]$OidcToken = (ConvertFrom-Json -InputObject $Response.Content -Depth 100).value
711+
Add-GitHubActionsSecretMask -Value $OidcToken
712+
return $OidcToken
713+
} catch {
714+
return Write-Error @_
715+
}
716+
}
717+
Set-Alias -Name 'Get-GHActionsOidcToken' -Value 'Get-GitHubActionsOidcToken' -Option 'ReadOnly' -Scope 'Local'
718+
<#
719+
.SYNOPSIS
671720
GitHub Actions - Get State
672721
.DESCRIPTION
673722
Get state.
@@ -1341,6 +1390,7 @@ Export-ModuleMember -Function @(
13411390
'Exit-GitHubActionsLogGroup',
13421391
'Get-GitHubActionsInput',
13431392
'Get-GitHubActionsIsDebug',
1393+
'Get-GitHubActionsOidcToken,'
13441394
'Get-GitHubActionsState',
13451395
'Get-GitHubActionsStepSummary',
13461396
'Get-GitHubActionsWebhookEventPayload',
@@ -1439,6 +1489,7 @@ Export-ModuleMember -Function @(
14391489
'Get-GHActionsEvent',
14401490
'Get-GHActionsInput',
14411491
'Get-GHActionsIsDebug',
1492+
'Get-GHActionsOidcToken',
14421493
'Get-GHActionsPayload',
14431494
'Get-GHActionsState',
14441495
'Get-GHActionsStepSummary',

0 commit comments

Comments
 (0)