Private/Invoke-PASIdentityLogon.ps1
|
function Invoke-PASIdentityLogon { <# .SYNOPSIS Authenticates to Identity for Privilege Cloud Shared Services logon .DESCRIPTION psPAS helper function. Uses the IdentityCommand module to authenticate an Identity User (Credential or SAMLResponse) or a Service User (Credential), returning the IdentityCommand session object. .PARAMETER TenantURL The Identity tenant URL. .PARAMETER Credential Identity User or Service User credential. .PARAMETER SAMLResponse SAML response for Identity User SAML authentication. .PARAMETER ServiceUser Authenticate as a Service User (New-IDPlatformToken) rather than an Identity User (New-IDSession). .EXAMPLE Invoke-PASIdentityLogon -TenantURL https://sometenant.id.cyberark.cloud -Credential $Cred .EXAMPLE Invoke-PASIdentityLogon -TenantURL https://sometenant.id.cyberark.cloud -Credential $Cred -ServiceUser #> [CmdletBinding(DefaultParameterSetName = 'Credential')] param( [parameter( Mandatory = $true )] [string]$TenantURL, [parameter( Mandatory = $true, ParameterSetName = 'Credential' )] [PSCredential]$Credential, [parameter( Mandatory = $true, ParameterSetName = 'SAML' )] [string]$SAMLResponse, [parameter( Mandatory = $false, ParameterSetName = 'Credential' )] [switch]$ServiceUser ) process { #Check IdentityCommand module available if (-not (Get-Module IdentityCommand)) { try { Import-Module IdentityCommand -ErrorAction Stop } catch { throw "Failed to import IdentityCommand: Install the IdentityCommand Module and try again. $($PSItem.Exception.Message)" } } switch ($true) { ($PSCmdlet.ParameterSetName -eq 'SAML') { New-IDSession -tenant_url $TenantURL -SAMLResponse $SAMLResponse break } ($ServiceUser.IsPresent) { New-IDPlatformToken -tenant_url $TenantURL -Credential $Credential break } default { New-IDSession -tenant_url $TenantURL -Credential $Credential } } } } |