Public/Connect-Universe.ps1
|
function Connect-Universe { [CmdletBinding(DefaultParameterSetName = 'Interactive')] param ( [Parameter(Mandatory = $false, ParameterSetName = "ATP")] [String] $AccessTokenProfile, [Parameter(Mandatory = $false, ParameterSetName = "Interactive")] [String] $TenantId = "common", [Parameter(Mandatory = $false, ParameterSetName = "Interactive")] [Parameter(Mandatory = $false, ParameterSetName = "ATP")] [ValidateSet("Production", "Development")] [String] $Environment = "Production", [Parameter(Mandatory = $false)] [String] $FQDN ) process { if ($PSBoundParameters.ContainsKey('FQDN')) { $Script:FQDN = $FQDN } elseif ($Environment -eq "Development") { $Script:FQDN = "dev-api.byfortytwo.com" } else { $Script:FQDN = "api.fortytwo.io" } # If the ATP parameter set is used, verify that the access token profile exists: if ($PSCmdlet.ParameterSetName -eq "ATP") { if (!(Get-EntraIDAccessTokenProfile -Profile $AccessTokenProfile)) { throw "Access token profile '$AccessTokenProfile' not found. Please create it using New-EntraIDAccessTokenProfile." } Write-Verbose "Using access token profile '$AccessTokenProfile' to connect to Fortytwo Universe." $Script:AccessTokenProfile = $AccessTokenProfile } else { $Script:AccessTokenProfile = "Fortytwo.Universe.Interactive" if ($Environment -eq "Production") { Write-Verbose "Creating interactive access token profile '$Script:AccessTokenProfile' for tenant '$TenantId'." Add-EntraIDInteractiveUserAccessTokenProfile -Name $Script:AccessTokenProfile -TenantId $TenantId -ClientId "68bf2f1d-b9e1-4477-8b90-81314861f05f" -Scope "https://api.fortytwo.io/.default" } else { Write-Verbose "Creating interactive access token profile '$Script:AccessTokenProfile' for tenant '$TenantId' (DEVELOPMENT)." Add-EntraIDInteractiveUserAccessTokenProfile -Name $Script:AccessTokenProfile -TenantId $TenantId -ClientId "b24eb00a-7f91-489b-b321-3b018da0e8a8" -Scope "api://c61cb4dd-35bf-4db9-b152-58e223782c11/.default" } } Write-Verbose "Connected to Fortytwo IAM Core API at '$Script:FQDN' using access token profile '$Script:AccessTokenProfile'." } } |