Functions/Authentication/Set-PASOAuthProvider.ps1
|
# .ExternalHelp psPAS-help.xml function Set-PASOAuthProvider { [CmdletBinding(SupportsShouldProcess)] param( [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true )] [ValidateLength(1, 50)] [ValidatePattern('^[a-zA-Z0-9]+$')] [string]$id, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [ValidateSet(1, 2)] [int]$accessTokenValidationMode, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 2048)] [string]$introspectionUrl, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 2048)] [string]$issuerUrl, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 8192)] [string]$publicKey, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [ValidateSet(1, 2)] [int]$signatureValidationMode, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [psobject[]]$allowedUsers, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 2048)] [string]$audience, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 2048)] [string]$jwksUrl, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [psobject]$clientCredentials, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 32)] [string]$clientIdClaimType ) begin { Assert-VersionRequirement -SelfHosted Assert-VersionRequirement -RequiredVersion 15.0 }#begin process { #Create URL for request $URI = "$($psPASSession.BaseURI)/api/Configuration/OAuth/Providers/$($id | Get-EscapedString)" #Get request parameters $boundParameters = $PSBoundParameters | Get-PASParameter -ParametersToRemove id #Get current provider configuration to merge any properties not supplied in the request $OAuthProvider = Get-PASOAuthProvider | Where-Object { $_.id -eq $id } if ($null -ne $OAuthProvider) { $OAuthProvider.psobject.Properties | Where-Object { $PSItem.Name -ne 'id' -and -not $boundParameters.ContainsKey($PSItem.Name) } | ForEach-Object { $boundParameters[$PSItem.Name] = $PSItem.Value } } #Create body of request #Send as raw UTF8 bytes rather than a String so ParameterBinding/module logging of this #call records a non-revealing type name instead of the literal request content. $body = [System.Text.Encoding]::UTF8.GetBytes($($boundParameters | ConvertTo-Json -Depth 5)) if ($PSCmdlet.ShouldProcess($id, 'Update OAuth Provider')) { #send request to web service $result = Invoke-PASRestMethod -Uri $URI -Method PUT -Body $body if ($null -ne $result) { $result } } }#process end { }#end } |