Index: lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestServlet.java =================================================================== diff -u -rac174824b862fb7976c0b767a16232106c5a5373 -ra2e9316b26f3b48a9d98a4d23f6b909c7c294a6c --- lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestServlet.java (.../LoginRequestServlet.java) (revision ac174824b862fb7976c0b767a16232106c5a5373) +++ lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestServlet.java (.../LoginRequestServlet.java) (revision a2e9316b26f3b48a9d98a4d23f6b909c7c294a6c) @@ -149,11 +149,7 @@ } // check if there is a redirect URL parameter already - String redirectURL = request.getParameter("redirectURL"); - if (redirectURL == null) { - // if not, get the full URL based on other parameters - redirectURL = WebUtil.getBaseServerURL() + LoginRequestDispatcher.getRequestURL(request); - } + String redirectURL = WebUtil.getBaseServerURL() + LoginRequestDispatcher.getRequestURL(request); redirectURL = URLEncoder.encode(redirectURL, "UTF-8"); // login.jsp knows what to do with these Index: lams_common/src/java/org/lamsfoundation/lams/integration/security/SsoHandler.java =================================================================== diff -u -rec066a30b3900769785b89bd007b1fb1f4bedd7f -ra2e9316b26f3b48a9d98a4d23f6b909c7c294a6c --- lams_common/src/java/org/lamsfoundation/lams/integration/security/SsoHandler.java (.../SsoHandler.java) (revision ec066a30b3900769785b89bd007b1fb1f4bedd7f) +++ lams_common/src/java/org/lamsfoundation/lams/integration/security/SsoHandler.java (.../SsoHandler.java) (revision a2e9316b26f3b48a9d98a4d23f6b909c7c294a6c) @@ -77,6 +77,12 @@ // recreate session here in case it was invalidated in login.jsp by sysadmin's LoginAs HttpSession session = request.getSession(); + // LoginRequestServlet (integrations) and LoginAsAction (sysadmin) set this parameter + String redirectURL = request.getParameter("redirectURL"); + if (!StringUtils.isBlank(redirectURL)) { + SsoHandler.handleRedirectBack(context, redirectURL); + } + /* Fetch UserDTO before completing request so putting it later in session is done ASAP * Response is sent in another thread and if UserDTO is not present in session when browser completes redirect, * it results in error. Winning this race is the easiest option.