Private/Auth/Connect-HydrationGraphViaBrowser.ps1
|
function Connect-HydrationGraphViaBrowser { [CmdletBinding()] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingConvertToSecureStringWithPlainText', '', Justification = 'Connect-MgGraph -AccessToken requires a SecureString; OAuth access token is already in memory.')] param( [Parameter(Mandatory)] [string]$TenantId, [Parameter(Mandatory)] [string[]]$Scopes, [Parameter(Mandatory)] [ValidateSet('Global', 'USGov', 'USGovDoD', 'Germany', 'China')] [string]$Environment, [string]$ClientId = '14d82eec-204b-4c2f-b7e8-296a70dab67e' ) $environmentInfo = Get-HydrationGraphEnvironmentInfo -Environment $Environment $resolvedScopes = ConvertTo-HydrationOAuthScope -Scopes $Scopes -GraphEndpoint $environmentInfo.Endpoint foreach ($attempt in 1..2) { $tokens = Get-HydrationTokenViaBrowser ` -ClientId $ClientId ` -TenantId $TenantId ` -AuthorityHost $environmentInfo.AuthorityHost ` -Scopes $resolvedScopes $secureToken = ConvertTo-SecureString -String $tokens.access_token -AsPlainText -Force try { Disconnect-MgGraph -ErrorAction SilentlyContinue | Out-Null Connect-MgGraph -AccessToken $secureToken -Environment $Environment -NoWelcome -ErrorAction Stop return } catch { if ($attempt -eq 2) { throw } Write-Verbose "Browser Graph token could not connect; retrying with a fresh browser sign-in: $_" } } } |