Functions/Authentication/Close-PASSession.ps1
function Close-PASSession { <# .SYNOPSIS Logoff from CyberArk Vault. .DESCRIPTION Performs Logoff and removes the Vault session. .PARAMETER UseClassicAPI Specify the UseClassicAPI switch to send the logoff request via the Classic (v9) API endpoint. Relevant for CyberArk versions earlier than 10.4 .PARAMETER SharedAuthentication Specify the SharedAuthentication switch to logoff from a shared authentication session .PARAMETER SAMLAuthentication Specify the SAMLAuthentication switch to logoff from a session authenticated to with SAML .EXAMPLE Close-PASSession Logs off from the session related to the authorisation token. .EXAMPLE Close-PASSession -SAMLAuthentication Logs off from the session related to the authorisation token using the SAML Authentication API endpoint. .EXAMPLE Close-PASSession -SharedAuthentication Logs off from the session related to the authorisation token using the Shared Authentication API endpoint. .EXAMPLE Close-PASSession -UseClassicAPI Logs off from the session related to the authorisation token using the Classic API endpoint. .LINK https://pspas.pspete.dev/commands/Close-PASSession #> [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', 'UseClassicAPI', Justification = "False Positive")] [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', 'SharedAuthentication', Justification = "False Positive")] [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', 'SAMLAuthentication', Justification = "False Positive")] [CmdletBinding(DefaultParameterSetName = "V10")] param( [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $false, ParameterSetName = "v9" )] [switch]$UseClassicAPI, [Parameter( Mandatory = $false, ValueFromPipeline = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "shared" )] [switch]$SharedAuthentication, [Parameter( Mandatory = $false, ValueFromPipeline = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "saml" )] [switch]$SAMLAuthentication ) BEGIN { Switch ($PSCmdlet.ParameterSetName) { "v9" { $URI = "$Script:BaseURI/WebServices/auth/Cyberark/CyberArkAuthenticationService.svc/Logoff" break } "saml" { $URI = "$Script:BaseURI/WebServices/auth/SAML/SAMLAuthenticationService.svc/Logoff" break } "shared" { $URI = "$Script:BaseURI/WebServices/auth/Shared/RestfulAuthenticationService.svc/Logoff" break } "V10" { $URI = "$Script:BaseURI/API/Auth/Logoff" break } } }#begin PROCESS { #Send Logoff Request Invoke-PASRestMethod -Uri $URI -Method POST -WebSession $Script:WebSession | Out-Null }#process END { #Set ExternalVersion to 0.0 [System.Version]$Version = "0.0" Set-Variable -Name ExternalVersion -Value $Version -Scope Script -ErrorAction SilentlyContinue #Clear Module scope variables on logoff Clear-Variable -Name BaseURI -Scope Script -ErrorAction SilentlyContinue Clear-Variable -Name WebSession -Scope Script -ErrorAction SilentlyContinue }#end } |