From 9d783efbc942d55ef60412e870f4f9f0e5bc5074 Mon Sep 17 00:00:00 2001
From: Stian Thorgersen <stianst@gmail.com>
Date: Mon, 17 Oct 2016 14:12:14 +0000
Subject: [PATCH] KEYCLOAK-3635 Not possible to filter debug/trace logging
---
src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java | 14 ++++++++------
1 files changed, 8 insertions(+), 6 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 441cd57..03bc9e6 100644
--- a/src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java
+++ b/src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java
@@ -17,11 +17,11 @@
package org.keycloak.protocol.oidc.utils;
+import org.jboss.logging.Logger;
import org.keycloak.models.ClientModel;
import org.keycloak.models.Constants;
import org.keycloak.models.RealmModel;
import org.keycloak.services.Urls;
-import org.keycloak.services.ServicesLogger;
import javax.ws.rs.core.UriInfo;
import java.net.URI;
@@ -33,7 +33,7 @@
*/
public class RedirectUtils {
- private static final ServicesLogger logger = ServicesLogger.ROOT_LOGGER;
+ private static final Logger logger = Logger.getLogger(RedirectUtils.class);
public static String verifyRealmRedirectUri(UriInfo uriInfo, String redirectUri, RealmModel realm) {
Set<String> validRedirects = getValidateRedirectUris(uriInfo, realm);
@@ -77,7 +77,7 @@
} else {
redirectUri = lowerCaseHostname(redirectUri);
- String r = redirectUri.indexOf('?') != -1 ? redirectUri.substring(0, redirectUri.indexOf('?')) : redirectUri;
+ String r = redirectUri;
Set<String> resolveValidRedirects = resolveValidRedirects(uriInfo, rootUrl, validRedirects);
boolean valid = matchesRedirects(resolveValidRedirects, r);
@@ -134,15 +134,17 @@
private static boolean matchesRedirects(Set<String> validRedirects, String redirect) {
for (String validRedirect : validRedirects) {
- if (validRedirect.endsWith("*")) {
+ if (validRedirect.endsWith("*") && !validRedirect.contains("?")) {
+ // strip off the query component - we don't check them when wildcards are effective
+ String r = redirect.contains("?") ? redirect.substring(0, redirect.indexOf("?")) : redirect;
// strip off *
int length = validRedirect.length() - 1;
validRedirect = validRedirect.substring(0, length);
- if (redirect.startsWith(validRedirect)) return true;
+ if (r.startsWith(validRedirect)) return true;
// strip off trailing '/'
if (length - 1 > 0 && validRedirect.charAt(length - 1) == '/') length--;
validRedirect = validRedirect.substring(0, length);
- if (validRedirect.equals(redirect)) return true;
+ if (validRedirect.equals(r)) return true;
} else if (validRedirect.equals(redirect)) return true;
}
return false;
--
Gitblit v1.10.0