You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2016/01/29 13:35:35 UTC
cxf-fediz git commit: Support for more involved client webapps with
multiple redirect points
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 <sb...@gmail.com>
Authored: Fri Jan 29 12:35:19 2016 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
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<String> redirectUris = new LinkedList<String>();
+ 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<String> registeredAuds = new LinkedList<String>();
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);