Authentication Methods
The following basic authentication methods are available:
Windows-based authentication (default) – The username and password are authenticated by Windows on the host on which the Zerto Virtual Manager or Zerto Cloud Appliance is installed.
Hypervisor manager authentication – The username and password are authenticated by the VMware vCenter Server or Microsoft SCVMM to which the Zerto Virtual Manager is connected.
To authenticate, invoke the following API:
https://zvm-ip:zvm-port/v1/session/add |
The response to this request contains a variable called x-zerto-session that contains a unique session ID that is used in subsequent requests to APIs.
Authentication Sample
The following code snippet shows an example of authentication.
| $baseURL = "https://" + $strZVMIP + ":"+$strZVMPort |
5 | $xZertoSessionURI = $baseURL +"/v1/session/add" |
1 | $authInfo = ("{0}:{1}" -f $userName,$password) |
2 | $authInfo = [System.Text.Encoding]::UTF8.GetBytes($authInfo) |
3 | $authInfo = [System.Convert]::ToBase64String($authInfo) |
4 | $headers = @{Authorization=("Basic {0}" -f $authInfo)} |
6 | $body = '{"AuthenticationMethod": "1"}' |
| $contentType = "application/json" |
7 | $xZertoSessionResponse = Invoke-WebRequest -Uri $xZertoSessionURI -Headers $headers -Method POST -Body $body -ContentType $contentType |
8 | return $xZertoSessionResponse.headers.get_item("x-zerto-session") |
where the code is created using the following steps, with each steps identified by the line number in the above table:
1. Create an authentication object array from the username and password.
$authInfo = ("{0}:{1}" -f $userName,$password) |
2. Convert the authentication object to UTF8.
$authInfo = [System.Text.Encoding]::UTF8.GetBytes($authInfo) |
3. Convert the information to base64 format.
$authInfo = [System.Convert]::ToBase64String($authInfo) |
4. Build the basic authentication format into a header variable.
$headers = @{Authorization=("Basic {0}" -f $authInfo)} |
5. Build the session request URL.
$xZertoSessionURI = $baseURL +"/v1/session/add" |
6. Authenticate the user's credentials. The fields body and contentType authenticate a user's credentials. By default, Windows authentication is used, and these fields are optional. To authenticate with hypervisor manager credentials, add the following:.
$body = '{"AuthenticationMethod": "1"}' $contentType = "application/json" |
7. Invoke the HTTP request to the specified URL, given the authentication header. The response will contain a header with the x-zerto-session variable.
$xZertoSessionResponse = Invoke-WebRequest -Uri $xZertoSessionURI -Headers $headers -Method POST -Body $body -ContentType $contentType |
If you are authenticating with the default, Windows credentials, remove “-Body $body -ContentType $contentType”.
8. Extract the x-zerto-session value from the response headers.
$xZertoSessionResponse.headers.get_item("x-zerto-session") |