Skip to content

Commit 23fbe8d

Browse files
committed
Fix authorize approval callback URL
Fixed the same issue for the approval submission callback URL that was revealed after commit 329e66f fixed the authorizeCallback one.
1 parent 7688350 commit 23fbe8d

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

src/main/java/org/apereo/cas/support/oauth/web/views/OAuth20ConsentApprovalViewResolver.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import org.springframework.web.servlet.ModelAndView;
2222

23+
import java.net.URI;
2324
import java.net.URISyntaxException;
2425
import java.util.HashSet;
2526
import java.util.Map;
@@ -139,14 +140,24 @@ protected ModelAndView redirectToApproveView(final JEEContext context, final Osf
139140
*/
140141
protected String getCallbackUrl(final JEEContext context) throws URISyntaxException {
141142
val callbackUrl = context.getFullRequestURL();
143+
val serverPrefix = casProperties.getServer().getPrefix();
144+
if (!callbackUrl.startsWith(serverPrefix)) {
145+
LOGGER.warn("[OAuth ConsentApproval] callback URL [{}] doesn't have the correct server prefix [{}]", callbackUrl, serverPrefix);
146+
} else {
147+
LOGGER.info("[OAuth ConsentApproval] callback URL [{}] uses the correct server prefix [{}]", callbackUrl, serverPrefix);
148+
}
149+
val serverPrefixUrl = new URI(serverPrefix);
142150
val url = new URIBuilder(callbackUrl);
151+
url.setScheme(serverPrefixUrl.getScheme());
152+
url.setHost(serverPrefixUrl.getHost());
153+
url.setPort(-1);
143154
// APPROVAL_PROMPT can be set to any value. It does not have any effect since BYPASS_APPROVAL_PROMPT is present.
144155
// However, setting it to EMPTY is preferred so that it is different from its original values "auto" or "force".
145156
url.setParameter(OsfCasOAuth20Constants.APPROVAL_PROMPT, StringUtils.EMPTY);
146157
url.setParameter(OAuth20Constants.BYPASS_APPROVAL_PROMPT, Boolean.TRUE.toString());
147-
LOGGER.debug("Callback URL for approval submit action: [{}]", callbackUrl);
148-
return url.toString();
149-
158+
val approvalCallbackUrl = url.toString();
159+
LOGGER.info("[OAuth ConsentApproval] modified approval callback URL [{}]", approvalCallbackUrl);
160+
return approvalCallbackUrl;
150161
}
151162

152163
/**

0 commit comments

Comments
 (0)