From 9717720245fa58619131833aa08d1190f48b4a26 Mon Sep 17 00:00:00 2001 From: Callum Date: Tue, 17 Apr 2018 21:45:11 +0100 Subject: [PATCH 1/2] Updated token auth to allow for UPN usernames and Hypervisor based auth --- ZertoModule/ZertoModule.psm1 | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/ZertoModule/ZertoModule.psm1 b/ZertoModule/ZertoModule.psm1 index aa3c34b..23aa6a3 100644 --- a/ZertoModule/ZertoModule.psm1 +++ b/ZertoModule/ZertoModule.psm1 @@ -1911,7 +1911,8 @@ param( [Parameter(Mandatory=$false, HelpMessage = 'Zerto Server or ENV:\ZertoServer')] [string] $ZertoServer = ( Get-EnvZertoServer ) , [Parameter(Mandatory=$false, HelpMessage = 'Zerto Server URL Port')] [string] $ZertoPort = ( Get-EnvZertoPort ), - [Parameter( HelpMessage = 'User to connect to Zerto')] [string] $ZertoUser + [Parameter( HelpMessage = 'User to connect to Zerto')] [string] $ZertoUser, + [Parameter( Mandatory = $false, HelpMessage = 'Hypervisor manager based authentication')] [switch] $HypervisorAuth ) Set-SSLCertByPass @@ -1937,15 +1938,22 @@ Remove-Item ENV:ZertoVersion -Force -ErrorAction Ignore # Authenticating with Zerto APIs - Basic AUTH over SSL - $authInfo = ("{0}\{1}:{2}" -f $cred.GetNetworkCredential().domain , $cred.GetNetworkCredential().UserName, $cred.GetNetworkCredential().Password ) + $authInfo = ("{0}:{1}" -f $cred.UserName, $cred.GetNetworkCredential().Password ) $authInfo = [System.Text.Encoding]::UTF8.GetBytes($authInfo) $authInfo = [System.Convert]::ToBase64String($authInfo) $headers = @{Authorization=("Basic {0}" -f $authInfo)} $sessionBody = '{"AuthenticationMethod": "1"}' #Need to check our Response. - try { - $xZertoSessionResponse = Invoke-WebRequest -Uri $FullURL -Headers $headers -Method POST -Body $sessionBody -ContentType $TypeJSON + try { + if ($HypervisorAuth.IsPresent) { + # Hypervisor manager based authentication + $xZertoSessionResponse = Invoke-WebRequest -Uri $FullURL -Headers $headers -Method POST -Body $sessionBody -ContentType $TypeJSON + } + else { + # Windows based authentication (default) + $xZertoSessionResponse = Invoke-WebRequest -Uri $FullURL -Headers $headers -Method POST + } } catch { $xZertoSessionResponse = $_.Exception.Response } From 8a211b91fc1c5e901f9c0b341a5c9fa793de6ec5 Mon Sep 17 00:00:00 2001 From: Callum Date: Wed, 18 Apr 2018 15:24:06 +0100 Subject: [PATCH 2/2] Updated Connect-ZertoZVM function to include HypervisorAuth parameter --- ZertoModule/ZertoModule.psm1 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ZertoModule/ZertoModule.psm1 b/ZertoModule/ZertoModule.psm1 index 23aa6a3..3ea58be 100644 --- a/ZertoModule/ZertoModule.psm1 +++ b/ZertoModule/ZertoModule.psm1 @@ -2025,12 +2025,13 @@ param( [Parameter(Mandatory=$true, HelpMessage = 'Zerto Server or ENV:\ZertoServer')] [string] $ZertoServer , [Parameter(Mandatory=$false, HelpMessage = 'Zerto Server URL Port')] [string] $ZertoPort = 9669 , - [Parameter(Mandatory=$false, HelpMessage = 'User to connect to Zerto')] [string] $ZertoUser + [Parameter(Mandatory=$false, HelpMessage = 'User to connect to Zerto')] [string] $ZertoUser, + [Parameter( Mandatory = $false, HelpMessage = 'Hypervisor manager based authentication')] [switch] $HypervisorAuth ) Set-Item ENV:ZertoServer $ZertoServer Set-Item ENV:ZertoPort $ZertoPort - Set-Item ENV:ZertoToken ((Get-ZertoAuthToken -ZertoServer $ZertoServer -ZertoPort $ZertoPort -ZertoUser $ZertoUser) | ConvertTo-Json -Compress) + Set-Item ENV:ZertoToken ((Get-ZertoAuthToken @PSBoundParameters) | ConvertTo-Json -Compress) Set-Item ENV:ZertoVersion (Get-ZertoLocalSite).version }