scripts/Update-IdentityNowSource.ps1
function Update-IdentityNowSource { <# .SYNOPSIS Update the configuration of an IdentityNow Source. .DESCRIPTION Update the configuration of an IdentityNow Source .PARAMETER sourceID (required) Id of the IdentityNow Source. e.g 12345 .PARAMETER update (required) Sources change(s) to update e.g name=SyntheticAttributes&description=Attributes for Provisioning Logic .PARAMETER accountProfile used to update the source account profile, pass the entire profile with updates .EXAMPLE Update-IdentityNowSource -sourceID 12345 -update 'name=SyntheticAttributes&description=Attributes for Provisioning Logic' .EXAMPLE Update-IdentityNowSource -sourceid 123456 -update 'connector_oauth_request_parameters={"scope":"users:read,users:write"}' .EXAMPLE $json='[{ "description": null, "fields": [ { "attributes": {}, "isRequired": false, "multi": false, "name": "username", "transform": { "attributes": { "name": "uid" }, "type": "identityAttribute" }, "type": "string" } ], "name": "Account", "usage": "Create", "validPolicy": true }]' Update-IdentityNowSource -sourceID 123434 -accountProfile -update $json .LINK http://darrenjrobinson.com/sailpoint-identitynow #> [cmdletbinding()] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [string]$sourceID, [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [string]$update, [switch]$accountProfile ) # IdentityNow Admin User $adminUSR = [string]$IdentityNowConfiguration.AdminCredential.UserName.ToLower() $adminPWDClear = [System.Runtime.InteropServices.marshal]::PtrToStringAuto([System.Runtime.InteropServices.marshal]::SecureStringToBSTR($IdentityNowConfiguration.AdminCredential.Password)) # Generate the account hash $hashUser = Get-HashString $adminUSR.ToLower() $adminPWD = Get-HashString "$($adminPWDClear)$($hashUser)" $clientSecretv3 = [System.Runtime.InteropServices.marshal]::PtrToStringAuto([System.Runtime.InteropServices.marshal]::SecureStringToBSTR($IdentityNowConfiguration.v3.Password)) # Basic Auth $Bytesv3 = [System.Text.Encoding]::utf8.GetBytes("$($IdentityNowConfiguration.v3.UserName):$($clientSecretv3)") $encodedAuthv3 = [Convert]::ToBase64String($Bytesv3) $Headersv3 = @{Authorization = "Basic $($encodedAuthv3)" } # Get v3 oAuth Token # oAuth URI $oAuthURI = "https://$($IdentityNowConfiguration.orgName).api.identitynow.com/oauth/token" $v3Token = Invoke-RestMethod -Method Post -Uri "$($oAuthURI)?grant_type=password&username=$($adminUSR)&password=$($adminPWD)" -Headers $Headersv3 if ($v3Token.access_token) { try { if ($accountProfile) { $body = $update $updateSource = Invoke-RestMethod -Method Post -Uri "https://$($IdentityNowConfiguration.orgName).identitynow.com/api/accountProfile/bulkUpdate/$($sourceID)" -Headers @{Authorization = "$($v3Token.token_type) $($v3Token.access_token)"; "Content-Type" = "application/json" } -Body $body return $updateSource } else { Write-Verbose "update ===> $($update)" $updateSource = Invoke-RestMethod -Method Post -Uri "https://$($IdentityNowConfiguration.orgName).api.identitynow.com/cc/api/source/update/$($sourceID)?$($update)" -Headers @{Authorization = "$($v3Token.token_type) $($v3Token.access_token)"; "Content-Type" = "application/json" } return $updateSource } } catch { Write-Error "Update failed. $($_)" } } else { Write-Error "Authentication Failed. Check your AdminCredential and v3 API ClientID and ClientSecret. $($_)" return $v3Token } } |