From d0daeb497f2d6a59f3c69f3d1bc6f75517c30925 Mon Sep 17 00:00:00 2001
From: Bruno Oliveira da Silva <bruno@abstractj.org>
Date: Wed, 14 Nov 2018 19:09:22 +0000
Subject: [PATCH] Redirect URLs are not normalized
---
src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java b/src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java
index c61bdd0..052c048 100644
--- a/src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java
+++ b/src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java
@@ -26,6 +26,7 @@
import javax.ws.rs.core.UriInfo;
import java.net.URI;
+import java.net.URISyntaxException;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
@@ -75,6 +76,10 @@
}
private static String verifyRedirectUri(UriInfo uriInfo, String rootUrl, String redirectUri, RealmModel realm, Set<String> validRedirects, boolean requireRedirectUri) {
+
+ if (redirectUri != null)
+ redirectUri = normalizeUrl(redirectUri);
+
if (redirectUri == null) {
if (!requireRedirectUri) {
redirectUri = getSingleValidRedirectUri(validRedirects);
@@ -170,4 +175,12 @@
return validRedirect;
}
+ private static String normalizeUrl(String url) {
+ try {
+ URI uri = new URI(url);
+ return uri.normalize().toString();
+ } catch (URISyntaxException e) {
+ throw new IllegalArgumentException("Invalid URL syntax: " + e.getMessage());
+ }
+ }
}
--
Gitblit v1.10.0