Vojtech Szocs has uploaded a new change for review.

Change subject: webadmin: Small cleanup in RestApiSessionManager
......................................................................

webadmin: Small cleanup in RestApiSessionManager

Acquiry of new session vs. keep-alive of existing session
logical scenarios represented by two separate methods.

REST CSRF token request header represented by a separate
String constant to avoid confusion with JSESSIONID header
containing actual REST session ID on HTTP response.

Change-Id: I98ad53785726c4ed1a8b1eaaf4fd473052496c3e
Signed-off-by: Vojtech Szocs <vsz...@redhat.com>
---
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionManager.java
1 file changed, 25 insertions(+), 18 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/08/35708/1

diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionManager.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionManager.java
index d6ead3f..b2fc7b2 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionManager.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionManager.java
@@ -67,10 +67,13 @@
 
     private static final Logger logger = 
Logger.getLogger(RestApiSessionManager.class.getName());
 
+    private static final String PREFER_HEADER = "Prefer"; //$NON-NLS-1$
     private static final String SESSION_ID_HEADER = "JSESSIONID"; //$NON-NLS-1$
+    private static final String CSRF_HEADER = SESSION_ID_HEADER;
+    private static final String ENGINE_AUTH_TOKEN_HEADER = 
"OVIRT-INTERNAL-ENGINE-AUTH-TOKEN"; //$NON-NLS-1$
+
     private static final String SESSION_ID_KEY = "RestApiSessionId"; 
//$NON-NLS-1$
     private static final String DEFAULT_SESSION_TIMEOUT = "30"; //$NON-NLS-1$
-    private static final String ENGINE_AUTH_TOKEN_HEADER = 
"OVIRT-INTERNAL-ENGINE-AUTH-TOKEN"; //$NON-NLS-1$
 
     // Heartbeat (delay) between REST API keep-alive requests
     private static final int SESSION_HEARTBEAT_MS = 1000 * 60; // 1 minute
@@ -96,34 +99,38 @@
     }
 
     /**
-     * Build HTTP request to acquire new or keep-alive existing REST API 
session.
-     * <p>
-     * The {@code engineAuthToken} is required only when creating new session. 
Once the session
-     * is created, {@code Prefer:persistent-auth} ensures that client receives 
the JSESSIONID
-     * cookie used to associate any subsequent requests with that session.
+     * Build HTTP request to keep-alive existing REST API session.
      */
-    RequestBuilder createRequest(String engineAuthToken) {
+    RequestBuilder createRequest() {
         RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, 
restApiBaseUrl);
 
         // Control REST API session timeout
         builder.setHeader("Session-TTL", restApiSessionTimeout); //$NON-NLS-1$
 
         // Express additional preferences for serving this request
-        String preferValue = "persistent-auth, csrf-protection"; //$NON-NLS-1$
-        if (engineAuthToken != null) {
-            // Enforce expiry of existing session when acquiring new session
-            preferValue += ", new-auth"; //$NON-NLS-1$
-
-            // Map this (physical) REST API session to current user's 
(logical) Engine session
-            builder.setHeader(ENGINE_AUTH_TOKEN_HEADER, engineAuthToken);
-        }
-        builder.setHeader("Prefer", preferValue); //$NON-NLS-1$
+        builder.setHeader(PREFER_HEADER, "persistent-auth, csrf-protection"); 
//$NON-NLS-1$
 
         // Add CSRF token, this is needed due to Prefer:csrf-protection
         String sessionId = getSessionId();
         if (sessionId != null) {
-            builder.setHeader(SESSION_ID_HEADER, sessionId);
+            builder.setHeader(CSRF_HEADER, sessionId);
         }
+
+        return builder;
+    }
+
+    /**
+     * Build HTTP request to acquire new REST API session.
+     */
+    RequestBuilder createRequest(String engineAuthToken) {
+        RequestBuilder builder = createRequest();
+
+        // Enforce expiry of existing session when acquiring new session
+        String preferValue = builder.getHeader(PREFER_HEADER);
+        builder.setHeader(PREFER_HEADER, preferValue + ", new-auth"); 
//$NON-NLS-1$
+
+        // Map this (physical) REST API session to current user's (logical) 
Engine session
+        builder.setHeader(ENGINE_AUTH_TOKEN_HEADER, engineAuthToken);
 
         return builder;
     }
@@ -144,7 +151,7 @@
 
                 if (sessionId != null) {
                     // The browser takes care of sending JSESSIONID cookie for 
this request automatically
-                    sendRequest(createRequest(null), new 
RestApiRequestCallback());
+                    sendRequest(createRequest(), new RestApiRequestCallback());
 
                     // The session is still in use, proceed with the heartbeat
                     return true;


-- 
To view, visit http://gerrit.ovirt.org/35708
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I98ad53785726c4ed1a8b1eaaf4fd473052496c3e
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Vojtech Szocs <vsz...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to