Implemented redirect to reqeusted URI (last path) after login
This commit is contained in:
parent
446286b77a
commit
fad2ca8be0
|
@ -22,6 +22,8 @@ public class OpenIdConnectLoginFilter extends BaseFilter {
|
||||||
|
|
||||||
protected static final Log log = LogFactoryUtil.getLog(OpenIdConnectLoginFilter.class);
|
protected static final Log log = LogFactoryUtil.getLog(OpenIdConnectLoginFilter.class);
|
||||||
|
|
||||||
|
public static final String REDIRECT_ATTRIBUTE = "redirect-after-login-to";
|
||||||
|
|
||||||
public OpenIdConnectLoginFilter() {
|
public OpenIdConnectLoginFilter() {
|
||||||
super();
|
super();
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
|
@ -62,6 +64,13 @@ public class OpenIdConnectLoginFilter extends BaseFilter {
|
||||||
JWTTokenUtil.putOIDCInRequest(token, request);
|
JWTTokenUtil.putOIDCInRequest(token, request);
|
||||||
// The auto login class will perform the portal auto login using the token
|
// The auto login class will perform the portal auto login using the token
|
||||||
} else {
|
} else {
|
||||||
|
String redirect = getRedirect(request);
|
||||||
|
if (redirect != null) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Setting orginal reqeusted URI in session: " + redirect);
|
||||||
|
}
|
||||||
|
session.setAttribute(REDIRECT_ATTRIBUTE, redirect);
|
||||||
|
}
|
||||||
String oidcRedirectURL = OpenIdConnectRESTHelper.buildLoginRequestURL(
|
String oidcRedirectURL = OpenIdConnectRESTHelper.buildLoginRequestURL(
|
||||||
configuration.getAuthorizationURL(), request.getServerName(), sessionId,
|
configuration.getAuthorizationURL(), request.getServerName(), sessionId,
|
||||||
request.getRequestURL().toString());
|
request.getRequestURL().toString());
|
||||||
|
@ -73,9 +82,31 @@ public class OpenIdConnectLoginFilter extends BaseFilter {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
processFilter(getClass(), request, response, filterChain);
|
processFilter(getClass(), request, response, filterChain);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getRedirect(HttpServletRequest request) {
|
||||||
|
if (log.isTraceEnabled()) {
|
||||||
|
log.trace("Getting redirect parameter");
|
||||||
|
}
|
||||||
|
String redirect = request.getParameter("redirect");
|
||||||
|
if (redirect == null) {
|
||||||
|
if (log.isTraceEnabled()) {
|
||||||
|
log.trace("Redirect parameter is null, trying with p_p_id and related redirect parameter");
|
||||||
|
}
|
||||||
|
String ppId = request.getParameter("p_p_id");
|
||||||
|
if (ppId != null) {
|
||||||
|
String redirectParamName = "_" + ppId + "_";
|
||||||
|
if (log.isTraceEnabled()) {
|
||||||
|
log.trace("Getting numbered redirect parameter: " + redirectParamName);
|
||||||
|
}
|
||||||
|
redirect = request.getParameter(redirectParamName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return redirect;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Log getLog() {
|
protected Log getLog() {
|
||||||
return log;
|
return log;
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
package org.gcube.portal.oidc.lr62;
|
package org.gcube.portal.oidc.lr62;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URLDecoder;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
|
@ -37,6 +40,18 @@ public class PostLoginAction extends Action {
|
||||||
log.info("Setting OIDC token in session");
|
log.info("Setting OIDC token in session");
|
||||||
JWTTokenUtil.putOIDCInSession(token, session);
|
JWTTokenUtil.putOIDCInSession(token, session);
|
||||||
}
|
}
|
||||||
|
String redirect = (String) session.getAttribute(OpenIdConnectLoginFilter.REDIRECT_ATTRIBUTE);
|
||||||
|
if (redirect != null) {
|
||||||
|
session.removeAttribute(OpenIdConnectLoginFilter.REDIRECT_ATTRIBUTE);
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Redirecting to the original requested URI: " + redirect);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
response.sendRedirect(URLDecoder.decode(redirect, "UTF-8"));
|
||||||
|
} catch (IOException e) {
|
||||||
|
new ActionException("Redirecting to original requested URI", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue