Public/ConfideConnectApi.ps1
|
<#
.SYNOPSIS Connect to Confide Public API .DESCRIPTION Connect to Confide Public API .PARAMETER Url The public API URL varies with your data center, you can find it in Confide user guide. .PARAMETER DataCenter The data center name (e.g., 'Australia Southeast (Victoria)', 'Canada Central (Toronto)'). If Url is not provided, DataCenter will be used to lookup the corresponding URL. .PARAMETER ClientId The application (client) ID you have retrieved from AvePoint Online Service App registrations. .PARAMETER ClientSecret The corresponding client secret you used while registering the AvePoint app. .PARAMETER Certificate The corresponding .pfx certificate file of the .cer certificate you used while registering the AvePoint app. .OUTPUTS None #> function Connect-Confide { [CmdletBinding()] Param( [Parameter(Position = 0, Mandatory = $true)] [String] ${ClientId}, [Parameter(Position = 1, Mandatory = $true, ParameterSetName = "ClientCertificate")] [Alias("Cert")] [System.Security.Cryptography.X509Certificates.X509Certificate2] ${Certificate}, [Parameter(Position = 2, Mandatory = $true, ParameterSetName = "ClientSecret")] [String] $ClientSecret, [Parameter(Mandatory = $false)] [String] ${Url}, [Parameter(Mandatory = $false)] [String] ${DataCenter}, [Parameter(Mandatory = $false)] [String] ${IdentityServiceUri} ) PROCESS { # Determine the URL if ([string]::IsNullOrEmpty($Url)) { if ([string]::IsNullOrEmpty($DataCenter)) { # No Url and no DataCenter provided, use default $Url = 'https://graph.avepointonlineservices.com/confide' } else { # DataCenter provided, lookup the URL using the configuration $Url = Get-ConfideDataCenterUrl -DataCenterName $DataCenter } } if (!$IdentityServiceUri) { $IdentityServiceUri = 'https://identity.avepointonlineservices.com' if ($Url.StartsWith('https://graph-public.sharepointguild.com/')) { $IdentityServiceUri = 'https://identity-public.sharepointguild.com' } } $Configuration = Get-ConfideConfiguration $Token = '' switch ($PsCmdlet.ParameterSetName) { "ClientCertificate" { $Token = Get-IdentityServiceToken -IdentityServiceUri $IdentityServiceUri -Scope confide.graph.readwrite.all -ClientId $ClientId -Cert $Certificate } "ClientSecret" { $Token = Get-IdentityServiceTokenByClientSecret -IdentityServiceUri $IdentityServiceUri -Scope confide.graph.readwrite.all -ClientId $ClientId -ClientSecret $ClientSecret } } $CustomerId = (Convert-JWTtoken $Token).realm if ($Configuration.containsKey("CustomerId") -and $CustomerId -ne $Configuration["CustomerId"]) { $continue = Read-Host "Are you sure you want to connect to another tenant? (Y/N)" if ($continue -eq "N") { return; } } $Configuration["BaseUrl"] = $Url $Configuration["AccessToken"] = $Token $Configuration["IdentityServiceUri"] = $IdentityServiceUri $Configuration["ClientId"] = $ClientId $Configuration["CustomerId"] = $CustomerId $Configuration["Certificate"] = $Certificate $Configuration["ClientSecret"] = $ClientSecret if (-not $Configuration["DefaultHeaders"].ContainsKey("Token-Source")) { $Configuration["DefaultHeaders"]["Token-Source"] = "PublicAPI" } } } <# .SYNOPSIS Disconnect from Confide Public API .DESCRIPTION Disconnect from Confide Public API .OUTPUTS None #> function Disconnect-Confide { [CmdletBinding()] Param() PROCESS { $Configuration = Get-ConfideConfiguration $Configuration["BaseUrl"] = $null $Configuration["AccessToken"] = $null $Configuration["IdentityServiceUri"] = $null $Configuration["ClientId"] = $null $Configuration["CustomerId"] = $null $Configuration["Certificate"] = $null $Configuration["ClientSecret"] = $null } } |