@Override public State prePromoteLogin(Request request, Response response, LoginContext context) throws Throwable { if(config.isOAuth2LoginEnabled()) { //Check cyclic redirect. if(!Strings.isEmpty(request.getParameter("oauth2_redirect"))) { throw new IllegalStateException("Cannot promote login for oauth2 redirect request : " + request.getUri()); }else{ context.setLoginUrl(buildRemoteLoginUrl(request)); } } return State.CONTINUE; }
protected String getReturnUrl(LoginContext context, Request request, String loginUrl){ String returnUrl = context.getReturnUrl() ; if(null == returnUrl){ returnUrl = request.getParameter(config.getReturnUrlParameterName()); } if(Strings.isEmpty(returnUrl)){ if(null != loginUrl) { String loginPath = Urls.removeQueryString(urlHandler.removePrefix(loginUrl)); if(!request.getPath().equals(loginPath)) { return request.getUriWithQueryString(); } } if(config.isLoginRedirectRoot()) { return "/"; }else { return request.getUri(); } } return returnUrl; }
protected String buildClientRedirectUri(Request request) { String uri; //todo: reverse proxy String redirectUri = config.getRedirectUri(); if (Strings.isEmpty(redirectUri)) { uri = request.getServletRequest().getRequestURL().toString(); }else{ if(Strings.startsWithIgnoreCase(redirectUri,"http")) { uri = redirectUri; }else{ uri = request.getContextUrl() + redirectUri; } String returnUrl = sc.getReturnUrlParameterName() + "=" + Urls.encode(request.getUri()); uri = Urls.appendQueryString(uri, returnUrl); } String redirectBack = REDIRECT_BACK_PARAM + "=1"; return Urls.appendQueryString(uri, redirectBack); }