diff --git a/build.gradle b/build.gradle
index f249716621b2f3b054668ef2ab5547ff86caac54..bc56306ddd203e46215ffa78aa4282df7b61bf81 100644
--- a/build.gradle
+++ b/build.gradle
@@ -390,7 +390,7 @@ dependencies {
     compile "net.sourceforge.saxon:saxon:${vSaxon}"
     compile "xalan:xalan:2.7.2"
 
-    compile "nl.bitwalker:UserAgentUtils:1.2.4"
+    compile "eu.bitwalker:UserAgentUtils:1.20"
     compile "com.twmacinta:fast-md5:2.7.1"
     compile "com.h2database:h2:1.4.191"
     compile "com.lowagie:itext:4.2.1"
diff --git a/src/main/java/org/nrg/xnat/restlet/guard/XnatSecureGuard.java b/src/main/java/org/nrg/xnat/restlet/guard/XnatSecureGuard.java
index ea38961e584bb21f4d09d90e623e87ceac47b279..ebbcdb058197cf1b11397530c8c5d4b86d1a0ec8 100644
--- a/src/main/java/org/nrg/xnat/restlet/guard/XnatSecureGuard.java
+++ b/src/main/java/org/nrg/xnat/restlet/guard/XnatSecureGuard.java
@@ -30,8 +30,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import java.util.UUID;
 
 public class XnatSecureGuard extends Filter {
 	private static final Logger logger     = LoggerFactory.getLogger(XnatSecureGuard.class);
@@ -109,14 +107,11 @@ public class XnatSecureGuard extends Filter {
 			if (challengeResponse != null) {
 				user = authenticateBasic(challengeResponse);
 				if (user != null) {
-					httpRequest.getSession().setAttribute("XNAT_CSRF", UUID.randomUUID().toString());
 					return true;
 				}
 			}
 			else if (!XDAT.getSiteConfigPreferences().getRequireLogin()) {
 				try {
-					HttpSession session = httpRequest.getSession();
-					session.removeAttribute("loggedin");
 					user=Users.getGuest();
 					if (user!=null) {
 						return true;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/SecureResource.java b/src/main/java/org/nrg/xnat/restlet/resources/SecureResource.java
index 08b451f0a58cae5623b8b1f94775c26087927d12..49409e2b6c9bd502e79481dec9ed93de1723ae4e 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/SecureResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/SecureResource.java
@@ -133,8 +133,6 @@ public abstract class SecureResource extends Resource {
     public String requested_format = null;
     public String filepath = null;
 
-    protected String csrfToken = null;
-
     private final SerializerService _serializer;
 
     public SecureResource(Context context, Request request, Response response) {
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/UserSession.java b/src/main/java/org/nrg/xnat/restlet/resources/UserSession.java
index 6d0ba78e7197f37d293fd961b132f4e01ed15c6a..026536bc68718a3fa196fb7782bed9b438b0289a 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/UserSession.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/UserSession.java
@@ -21,8 +21,6 @@ import org.restlet.resource.ResourceException;
 import org.restlet.resource.StringRepresentation;
 import org.restlet.resource.Variant;
 
-import java.util.UUID;
-
 public class UserSession extends SecureResource {
     protected UserI user = null;
 
@@ -33,7 +31,6 @@ public class UserSession extends SecureResource {
 
         // copy the user from the request into the session
         getHttpSession().setAttribute("userHelper", UserHelper.getUserHelperService(user));
-        getHttpSession().setAttribute("XNAT_CSRF", UUID.randomUUID().toString());
     }
 
     @Override
diff --git a/src/main/java/org/nrg/xnat/security/OnXnatLogin.java b/src/main/java/org/nrg/xnat/security/OnXnatLogin.java
index f8e20eff78af4e2216a21defb4ec5d63e336e07d..09d5d5a9719f2e39c1bc29299e6a99027f907336 100644
--- a/src/main/java/org/nrg/xnat/security/OnXnatLogin.java
+++ b/src/main/java/org/nrg/xnat/security/OnXnatLogin.java
@@ -10,28 +10,25 @@
  */
 package org.nrg.xnat.security;
 
-import java.io.IOException;
-import java.util.UUID;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.nrg.xdat.XDAT;
 import org.nrg.xdat.security.helpers.UserHelper;
-import org.nrg.xdat.security.helpers.Users;
 import org.nrg.xdat.turbine.utils.AccessLogger;
 import org.nrg.xft.XFTItem;
 import org.nrg.xft.event.EventUtils;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.SaveItemHelper;
 import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
 
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Calendar;
+import java.util.Date;
+
 public class OnXnatLogin extends SavedRequestAwareAuthenticationSuccessHandler {
 
 	protected final Log logger = LogFactory.getLog(getClass());
@@ -47,20 +44,20 @@ public class OnXnatLogin extends SavedRequestAwareAuthenticationSuccessHandler {
         
         try{
 			final UserI user = XDAT.getUserDetails();
-	      	request.getSession().setAttribute("XNAT_CSRF", UUID.randomUUID().toString());
-	      	
-	      	java.util.Date today = java.util.Calendar.getInstance(java.util.TimeZone.getDefault()).getTime();
-	      	XFTItem item = XFTItem.NewItem("xdat:user_login",user);
-	      	item.setProperty("xdat:user_login.user_xdat_user_id", user.getID());
-	      	item.setProperty("xdat:user_login.login_date",today);
-	      	item.setProperty("xdat:user_login.ip_address", AccessLogger.GetRequestIp(request));
-	      	item.setProperty("xdat:user_login.session_id", request.getSession().getId());
-	      	SaveItemHelper.authorizedSave(item,null,true,false, EventUtils.DEFAULT_EVENT(user,null));
-	      	
-	      	request.getSession().setAttribute("userHelper", UserHelper.getUserHelperService(user));
-        }
-        catch(Exception e){
-        	logger.error(e);
+
+            if (user != null) {
+                Date today = Calendar.getInstance(java.util.TimeZone.getDefault()).getTime();
+                XFTItem item = XFTItem.NewItem("xdat:user_login", user);
+                item.setProperty("xdat:user_login.user_xdat_user_id", user.getID());
+                item.setProperty("xdat:user_login.login_date", today);
+                item.setProperty("xdat:user_login.ip_address", AccessLogger.GetRequestIp(request));
+                item.setProperty("xdat:user_login.session_id", request.getSession().getId());
+                SaveItemHelper.authorizedSave(item, null, true, false, EventUtils.DEFAULT_EVENT(user, null));
+
+                request.getSession().setAttribute("userHelper", UserHelper.getUserHelperService(user));
+            }
+        } catch (Exception e) {
+            logger.error(e);
         }
         super.onAuthenticationSuccess(request, response, authentication);
 	}
diff --git a/src/main/java/org/nrg/xnat/security/XnatBasicAuthenticationFilter.java b/src/main/java/org/nrg/xnat/security/XnatBasicAuthenticationFilter.java
index 3f78e5c302dbff21e245cd6c03eac236615f2a63..21d71b33f900ad461a2895a80fe913647924d661 100644
--- a/src/main/java/org/nrg/xnat/security/XnatBasicAuthenticationFilter.java
+++ b/src/main/java/org/nrg/xnat/security/XnatBasicAuthenticationFilter.java
@@ -39,8 +39,9 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.Map;
-import java.util.UUID;
 
 public class XnatBasicAuthenticationFilter extends BasicAuthenticationFilter {
 
@@ -152,23 +153,24 @@ public class XnatBasicAuthenticationFilter extends BasicAuthenticationFilter {
                                               Authentication authResult) throws IOException {
         try {
             final UserI user = XDAT.getUserDetails();
-            Object lock = locks.get(user.getID());
-            if (lock == null) {
-                locks.put(user.getID(), new Object());
-                lock = locks.get(user.getID());
-            }
+            if (user != null) {
+                Object lock = locks.get(user.getID());
+                if (lock == null) {
+                    locks.put(user.getID(), new Object());
+                    lock = locks.get(user.getID());
+                }
 
-            synchronized (lock) {
-                java.util.Date today = java.util.Calendar.getInstance(java.util.TimeZone.getDefault()).getTime();
-                XFTItem item = XFTItem.NewItem("xdat:user_login", user);
-                item.setProperty("xdat:user_login.user_xdat_user_id", user.getID());
-                item.setProperty("xdat:user_login.login_date", today);
-                item.setProperty("xdat:user_login.ip_address", AccessLogger.GetRequestIp(request));
-                item.setProperty("xdat:user_login.session_id", request.getSession().getId());
-                SaveItemHelper.authorizedSave(item, null, true, false, EventUtils.DEFAULT_EVENT(user, null));
+                synchronized (lock) {
+                    Date today = Calendar.getInstance(java.util.TimeZone.getDefault()).getTime();
+                    XFTItem item = XFTItem.NewItem("xdat:user_login", user);
+                    item.setProperty("xdat:user_login.user_xdat_user_id", user.getID());
+                    item.setProperty("xdat:user_login.login_date", today);
+                    item.setProperty("xdat:user_login.ip_address", AccessLogger.GetRequestIp(request));
+                    item.setProperty("xdat:user_login.session_id", request.getSession().getId());
+                    SaveItemHelper.authorizedSave(item, null, true, false, EventUtils.DEFAULT_EVENT(user, null));
+                }
+                request.getSession().setAttribute("userHelper", UserHelper.getUserHelperService(user));
             }
-            request.getSession().setAttribute("XNAT_CSRF", UUID.randomUUID().toString());
-            request.getSession().setAttribute("userHelper", UserHelper.getUserHelperService(user));
         } catch (Exception e) {
             logger.error(e);
         }