ovirt: Use sso-token when set in .vv file

Starting with oVirt 4.0, this replaces the jsessionid field for
automatic authentication with oVirt instances for REST communication.
This commit is contained in:
Christophe Fergeau 2016-01-15 16:35:52 +01:00
parent c904b1c63a
commit 4f37332940
2 changed files with 31 additions and 5 deletions

View File

@ -309,8 +309,15 @@ GUID of the oVirt virtual machine to connect to.
=item C<jsessionid> (string)
Value to set the 'jsessionid' cookie to. Setting this authentication cookie to a valid value
will allow to interact with the oVirt REST API without being asked for credentials.
Value to set the 'jsessionid' cookie to. With oVirt 3.6, setting this
authentication cookie to a valid value will allow to interact with the oVirt
REST API without being asked for credentials.
=item C<sso-token> (string)
Value to set the 'Authorization' header to. With oVirt 4.0 or newer, setting
this authentication header to a valid value will allow to interact with the
oVirt REST API without being asked for credentials.
=item C<ca> (string)

View File

@ -834,6 +834,7 @@ OvirtForeignMenu *ovirt_foreign_menu_new_from_file(VirtViewerFile *file)
gboolean admin;
char *ca_str = NULL;
char *jsessionid = NULL;
char *sso_token = NULL;
char *url = NULL;
char *vm_guid = NULL;
GByteArray *ca = NULL;
@ -841,15 +842,22 @@ OvirtForeignMenu *ovirt_foreign_menu_new_from_file(VirtViewerFile *file)
url = virt_viewer_file_get_ovirt_host(file);
vm_guid = virt_viewer_file_get_ovirt_vm_guid(file);
jsessionid = virt_viewer_file_get_ovirt_jsessionid(file);
sso_token = virt_viewer_file_get_ovirt_sso_token(file);
ca_str = virt_viewer_file_get_ovirt_ca(file);
admin = virt_viewer_file_get_ovirt_admin(file);
if ((url == NULL) || (vm_guid == NULL) || (jsessionid == NULL)) {
g_debug("ignoring [ovirt] section content as URL, VM GUID or jsessionid"
if ((url == NULL) || (vm_guid == NULL)) {
g_debug("ignoring [ovirt] section content as URL, VM GUID"
" are missing from the .vv file");
goto end;
}
if ((jsessionid == NULL) && (sso_token == NULL)) {
g_debug("ignoring [ovirt] section content as jsessionid and sso-token"
" are both missing from the .vv file");
goto end;
}
proxy = ovirt_proxy_new(url);
if (proxy == NULL)
goto end;
@ -861,9 +869,19 @@ OvirtForeignMenu *ovirt_foreign_menu_new_from_file(VirtViewerFile *file)
g_object_set(G_OBJECT(proxy),
"admin", admin,
"session-id", jsessionid,
"ca-cert", ca,
NULL);
if (jsessionid != NULL) {
g_object_set(G_OBJECT(proxy),
"session-id", jsessionid,
NULL);
}
if (sso_token != NULL) {
g_object_set(G_OBJECT(proxy),
"sso-token", sso_token,
NULL);
}
menu = g_object_new(OVIRT_TYPE_FOREIGN_MENU,
"proxy", proxy,
"vm-guid", vm_guid,
@ -873,6 +891,7 @@ end:
g_free(url);
g_free(vm_guid);
g_free(jsessionid);
g_free(sso_token);
g_free(ca_str);
if (ca != NULL) {
g_byte_array_unref(ca);