Skip to content
This repository was archived by the owner on Apr 5, 2022. It is now read-only.
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ public SocialAuthenticationToken getAuthToken(HttpServletRequest request, HttpSe
}

protected String buildReturnToUrl(HttpServletRequest request) {
StringBuffer sb = request.getRequestURL();
StringBuffer sb = getProxyHeaderAwareRequestURL(request);
sb.append("?");

for (String name : getReturnToUrlParameters()) {
Expand All @@ -134,6 +134,33 @@ protected String buildReturnToUrl(HttpServletRequest request) {
return sb.toString();
}

protected StringBuffer getProxyHeaderAwareRequestURL(HttpServletRequest request) {
String host = request.getHeader("Host");
if (StringUtils.isEmpty(host)) {
return request.getRequestURL();
}
StringBuffer sb = new StringBuffer();
String schemeHeader = request.getHeader("X-Forwarded-Proto");
String portHeader = request.getHeader("X-Forwarded-Port");
String scheme = StringUtils.isEmpty(schemeHeader) ? "http" : schemeHeader;
String port = StringUtils.isEmpty(portHeader) ? "80" : portHeader;
if (scheme.equals("http") && port.equals("80")){
port = "";
}
if (scheme.equals("https") && port.equals("443")){
port = "";
}
sb.append(scheme);
sb.append("://");
sb.append(host);
if (StringUtils.hasLength(port)){
sb.append(":");
sb.append(port);
}
sb.append(request.getRequestURI());
return sb;
}

private OAuthToken extractCachedRequestToken(HttpServletRequest request) {
OAuthToken requestToken = (OAuthToken) request.getSession().getAttribute(OAUTH_TOKEN_ATTRIBUTE);
request.getSession().removeAttribute(OAUTH_TOKEN_ATTRIBUTE);
Expand Down