Root/Get-WS1AccessToken.ps1

<#
.SYNOPSIS
Obtain an OAuth 2.0 access token.
Source: https://github.com/vmware/idm/wiki/Integrating-Client-Credentials-app-with-OAuth2#getting-your-client-credentials-access-token
 
.PARAMETER Tenant
Mandatory: WS1 Access Tenant URL
 
.PARAMETER ClientID
Mandatory: Client Identifier
 
.PARAMETER ClientSecret
Mandatory: Client Shared secret
 
.EXAMPLE
Get-ws1aAccessToken -Tenant "VIDMTenant.Domain.com" -ClientID "API-Admin" -ClientSecret "QWrfdghGTgt4GGJj5Hh"
#>

function Get-WS1AccessToken {
    [cmdletbinding()]
    param(
       [Parameter(Mandatory=$true)][string]$Tenant,
       [Parameter(Mandatory=$true)][string]$ClientID,
       [Parameter(Mandatory=$true)][string]$ClientSecret
    )
    
    $URI = "https://$($Tenant)/SAAS/auth/oauthtoken"
    $SCclient =[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("$($ClientID):$($ClientSecret)"))
    $Header = @{
        authorization = 'Basic ' + $SCclient
        'content-type' = 'application/x-www-form-urlencoded'
    }
    $Body = @{
        grant_type = 'client_credentials'
    }
    $IRMParams = @{
        Method = 'POST'
        Headers = $Header
        Body = $Body
        URI = $URI
    }
    Write-Debug $($IRMParams | out-string)
    $Token = Invoke-RestMethod @IRMParams
    $Token | Add-Member -NotePropertyMembers @{Tenant="$($Tenant)"}
    Return $Token
}