Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9C47F18A85 for ; Fri, 29 Jan 2016 12:35:35 +0000 (UTC) Received: (qmail 57849 invoked by uid 500); 29 Jan 2016 12:35:35 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 57791 invoked by uid 500); 29 Jan 2016 12:35:35 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 57782 invoked by uid 99); 29 Jan 2016 12:35:35 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 Jan 2016 12:35:35 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 50FC3E0A12; Fri, 29 Jan 2016 12:35:35 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sergeyb@apache.org To: commits@cxf.apache.org Message-Id: <08e56579e3c249f2b6cbe7bc1466cb6d@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: cxf-fediz git commit: Support for more involved client webapps with multiple redirect points Date: Fri, 29 Jan 2016 12:35:35 +0000 (UTC) Repository: cxf-fediz Updated Branches: refs/heads/master 485b96744 -> 10b9246ae Support for more involved client webapps with multiple redirect points Project: http://git-wip-us.apache.org/repos/asf/cxf-fediz/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf-fediz/commit/10b9246a Tree: http://git-wip-us.apache.org/repos/asf/cxf-fediz/tree/10b9246a Diff: http://git-wip-us.apache.org/repos/asf/cxf-fediz/diff/10b9246a Branch: refs/heads/master Commit: 10b9246ae1221997799dcdc44a4981264cf5e630 Parents: 485b967 Author: Sergey Beryozkin Authored: Fri Jan 29 12:35:19 2016 +0000 Committer: Sergey Beryozkin Committed: Fri Jan 29 12:35:19 2016 +0000 ---------------------------------------------------------------------- .../service/oidc/ClientRegistrationService.java | 30 +++++++++++--------- 1 file changed, 17 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/10b9246a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/ClientRegistrationService.java ---------------------------------------------------------------------- diff --git a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/ClientRegistrationService.java b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/ClientRegistrationService.java index 351b922..733f7ea 100644 --- a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/ClientRegistrationService.java +++ b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/ClientRegistrationService.java @@ -23,7 +23,6 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; @@ -211,10 +210,6 @@ public class ClientRegistrationService { if (!("confidential".equals(appType) || "public".equals(appType))) { throw new InvalidRegistrationException("An invalid client type was specified: " + appType); } - //TODO: support multiple redirect URIs - if (redirectURI != null && !"".equals(redirectURI) && !isValidURI(redirectURI, false)) { - throw new InvalidRegistrationException("An invalid redirect URI was specified: " + redirectURI); - } String clientId = generateClientId(); boolean isConfidential = "confidential".equals(appType); @@ -225,7 +220,17 @@ public class ClientRegistrationService { FedizClient newClient = new FedizClient(clientId, clientSecret, isConfidential, appName); newClient.setHomeRealm(homeRealm); if (!StringUtils.isEmpty(redirectURI)) { - newClient.setRedirectUris(Collections.singletonList(redirectURI)); + String[] allUris = redirectURI.trim().split(" "); + List redirectUris = new LinkedList(); + for (String uri : allUris) { + if (!StringUtils.isEmpty(uri)) { + if (!isValidURI(uri, false)) { + throw new InvalidRegistrationException("An invalid redirect URI was specified: " + uri); + } + redirectUris.add(uri); + } + } + newClient.setRedirectUris(redirectUris); } String userName = sc.getUserPrincipal().getName(); UserSubject userSubject = new UserSubject(userName); @@ -241,15 +246,14 @@ public class ClientRegistrationService { String[] auds = audience.trim().split(" "); List registeredAuds = new LinkedList(); for (String aud : auds) { - // make sure it is a proper URI - if (!"".equals(aud) && !isValidURI(aud, true)) { - throw new InvalidRegistrationException("An invalid audience URI was specified: " + aud); + if (!StringUtils.isEmpty(aud)) { + if (!isValidURI(aud, true)) { + throw new InvalidRegistrationException("An invalid audience URI was specified: " + aud); + } + registeredAuds.add(aud); } - registeredAuds.add(aud); - } - if (!registeredAuds.isEmpty()) { - newClient.setRegisteredAudiences(registeredAuds); } + newClient.setRegisteredAudiences(registeredAuds); } return registerNewClient(newClient);