From edac0ccc32848d4ecf3ae36264318ae4a92cf943 Mon Sep 17 00:00:00 2001
From: Pedro Igor <pigor.craveiro@gmail.com>
Date: Thu, 27 Feb 2020 07:29:06 +0000
Subject: [PATCH] [KEYCLOAK-11576] - Properly handling redirect_uri parser errors
---
src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java | 23 ++++++++++++-----------
1 files changed, 12 insertions(+), 11 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 5f89335..0b108f1 100644
--- a/src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java
+++ b/src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java
@@ -84,8 +84,18 @@
KeycloakUriInfo uriInfo = session.getContext().getUri();
RealmModel realm = session.getContext().getRealm();
- if (redirectUri != null)
- redirectUri = normalizeUrl(redirectUri);
+ if (redirectUri != null) {
+ try {
+ URI uri = URI.create(redirectUri);
+ redirectUri = uri.normalize().toString();
+ } catch (IllegalArgumentException cause) {
+ logger.debug("Invalid redirect uri", cause);
+ return null;
+ } catch (Exception cause) {
+ logger.debug("Unexpected error when parsing redirect uri", cause);
+ return null;
+ }
+ }
if (redirectUri == null) {
if (!requireRedirectUri) {
@@ -185,13 +195,4 @@
}
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