This is an automated email from the ASF dual-hosted git repository.
buhhunyx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf-fediz.git
The following commit(s) were added to refs/heads/master by this push:
new a08ab0b fediz-oidc: minor ClientRegistrationService improvements
a08ab0b is described below
commit a08ab0b35d569ba72188f1ea39d721f566d6255e
Author: Alexey Markevich <[email protected]>
AuthorDate: Tue Feb 25 13:41:45 2020 +0300
fediz-oidc: minor ClientRegistrationService improvements
---
services/oidc/pom.xml | 6 --
.../service/oidc/clients/ClientCodeGrants.java | 12 ++--
.../oidc/clients/ClientRegistrationService.java | 73 +++++++---------------
.../fediz/service/oidc/clients/ClientTokens.java | 16 ++---
.../fediz/service/oidc/logout/LogoutService.java | 16 ++---
5 files changed, 45 insertions(+), 78 deletions(-)
diff --git a/services/oidc/pom.xml b/services/oidc/pom.xml
index b4bd2f8..771dddf 100644
--- a/services/oidc/pom.xml
+++ b/services/oidc/pom.xml
@@ -30,12 +30,6 @@
<packaging>war</packaging>
<dependencies>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>${junit.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
diff --git
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientCodeGrants.java
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientCodeGrants.java
index 8520908..c7b16c9 100644
---
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientCodeGrants.java
+++
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientCodeGrants.java
@@ -18,16 +18,16 @@
*/
package org.apache.cxf.fediz.service.oidc.clients;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.Collection;
+import java.util.Collections;
import org.apache.cxf.rs.security.oauth2.common.Client;
import
org.apache.cxf.rs.security.oauth2.grants.code.ServerAuthorizationCodeGrant;
public class ClientCodeGrants {
private Client client;
- private List<ServerAuthorizationCodeGrant> codeGrants = new LinkedList<>();
- public ClientCodeGrants(Client c, List<ServerAuthorizationCodeGrant>
codeGrants) {
+ private Collection<ServerAuthorizationCodeGrant> codeGrants =
Collections.emptyList();
+ public ClientCodeGrants(Client c, Collection<ServerAuthorizationCodeGrant>
codeGrants) {
this.client = c;
this.codeGrants = codeGrants;
}
@@ -37,10 +37,10 @@ public class ClientCodeGrants {
public void setClient(Client client) {
this.client = client;
}
- public List<ServerAuthorizationCodeGrant> getCodeGrants() {
+ public Collection<ServerAuthorizationCodeGrant> getCodeGrants() {
return codeGrants;
}
- public void setCodeGrants(List<ServerAuthorizationCodeGrant> codeGrants) {
+ public void setCodeGrants(Collection<ServerAuthorizationCodeGrant>
codeGrants) {
this.codeGrants = codeGrants;
}
diff --git
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientRegistrationService.java
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientRegistrationService.java
index b9a5f77..8d063b1 100644
---
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientRegistrationService.java
+++
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientRegistrationService.java
@@ -22,15 +22,12 @@ package org.apache.cxf.fediz.service.oidc.clients;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -61,6 +58,7 @@ import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.fediz.service.oidc.CSRFUtils;
import org.apache.cxf.jaxrs.ext.MessageContext;
import org.apache.cxf.jaxrs.utils.ExceptionUtils;
+import org.apache.cxf.rs.security.oauth2.common.AccessToken;
import org.apache.cxf.rs.security.oauth2.common.Client;
import org.apache.cxf.rs.security.oauth2.common.ServerAccessToken;
import org.apache.cxf.rs.security.oauth2.common.UserSubject;
@@ -78,11 +76,11 @@ public class ClientRegistrationService {
private static final Logger LOG =
LogUtils.getL7dLogger(ClientRegistrationService.class);
- private Map<String, Collection<Client>> registrations = new HashMap<>();
- private Map<String, Set<String>> clientNames = new HashMap<>();
+ private final Map<String, Collection<Client>> registrations = new
HashMap<>();
+ private final Map<String, Set<String>> clientNames = new HashMap<>();
private OAuthDataProvider dataProvider;
private ClientRegistrationProvider clientProvider;
- private Map<String, String> homeRealms = new LinkedHashMap<>();
+ private Map<String, String> homeRealms = Collections.emptyMap();
private boolean protectIdTokenWithClientSecret;
private Map<String, String> clientScopes;
@@ -183,14 +181,12 @@ public class ClientRegistrationService {
}
protected ClientTokens doGetClientIssuedTokens(Client c) {
- Comparator<ServerAccessToken> tokenComp = new TokenComparator();
+ Comparator<AccessToken> tokenComp =
Comparator.comparingLong(AccessToken::getIssuedAt);
UserSubject subject = new OidcUserSubject(getUserName());
- List<ServerAccessToken> accessTokens =
- new ArrayList<>(dataProvider.getAccessTokens(c, subject));
- Collections.sort(accessTokens, tokenComp);
- List<RefreshToken> refreshTokens =
- new ArrayList<>(dataProvider.getRefreshTokens(c, subject));
- Collections.sort(refreshTokens, tokenComp);
+ Collection<ServerAccessToken> accessTokens = new TreeSet<>(tokenComp);
+ accessTokens.addAll(dataProvider.getAccessTokens(c, subject));
+ Collection<RefreshToken> refreshTokens = new TreeSet<>(tokenComp);
+ refreshTokens.addAll(dataProvider.getRefreshTokens(c, subject));
return new ClientTokens(c, accessTokens, refreshTokens);
}
@POST
@@ -241,9 +237,9 @@ public class ClientRegistrationService {
throwInvalidRegistrationException("The client id is invalid");
}
UserSubject subject = new OidcUserSubject(getUserName());
- List<ServerAuthorizationCodeGrant> codeGrants = new ArrayList<>(
- ((AuthorizationCodeDataProvider)dataProvider).getCodeGrants(c,
subject));
- Collections.sort(codeGrants, new CodeGrantComparator());
+ Collection<ServerAuthorizationCodeGrant> codeGrants = new
TreeSet<>(
+
Comparator.comparingLong(ServerAuthorizationCodeGrant::getIssuedAt));
+
codeGrants.addAll(((AuthorizationCodeDataProvider)dataProvider).getCodeGrants(c,
subject));
return new ClientCodeGrants(c, codeGrants);
}
return null;
@@ -325,7 +321,7 @@ public class ClientRegistrationService {
// Client Redirect URIs
if (!StringUtils.isEmpty(redirectURI)) {
String[] allUris = redirectURI.trim().split(" ");
- List<String> redirectUris = new LinkedList<>();
+ List<String> redirectUris = new ArrayList<>(allUris.length);
for (String uri : allUris) {
if (!StringUtils.isEmpty(uri)) {
if (!isValidURI(uri, false)) {
@@ -353,7 +349,7 @@ public class ClientRegistrationService {
// Client Audience URIs
if (!StringUtils.isEmpty(audience)) {
String[] auds = audience.trim().split(" ");
- List<String> registeredAuds = new LinkedList<>();
+ List<String> registeredAuds = new ArrayList<>(auds.length);
for (String aud : auds) {
if (!StringUtils.isEmpty(aud)) {
if (!isValidURI(aud, true)) {
@@ -368,7 +364,7 @@ public class ClientRegistrationService {
// Client Scopes
if (clientScopes != null && !clientScopes.isEmpty()) {
- newClient.setRegisteredScopes(new
ArrayList<String>(clientScopes.keySet()));
+ newClient.setRegisteredScopes(new
ArrayList<>(clientScopes.keySet()));
}
return Response.ok(registerNewClient(newClient)).build();
} catch (InvalidRegistrationException ex) {
@@ -400,9 +396,9 @@ public class ClientRegistrationService {
throw new InvalidRegistrationException(error);
}
- private boolean isValidURI(String uri, boolean requireHttps) {
+ private static boolean isValidURI(String uri, boolean requireHttps) {
- UrlValidator urlValidator = null;
+ final UrlValidator urlValidator;
if (requireHttps) {
String[] schemes = {"https"};
@@ -479,7 +475,9 @@ public class ClientRegistrationService {
protected Collection<Client> getClientRegistrations(String userName) {
Collection<Client> userClientRegs = registrations.get(userName);
if (userClientRegs == null) {
- userClientRegs = new TreeSet<>(new ClientComparator());
+ // or the registration date comparison - this can be driven from UI
+ // example, Sort Clients By Name/Date/etc
+ userClientRegs = new
TreeSet<>(Comparator.comparing(Client::getApplicationName));
registrations.put(userName, userClientRegs);
}
return userClientRegs;
@@ -536,9 +534,8 @@ public class ClientRegistrationService {
// Support additional top level domains
if (additionalTLDs != null && !additionalTLDs.isEmpty()) {
try {
- String[] tldsToAddArray = additionalTLDs.toArray(new
String[0]);
- LOG.info("Adding the following additional Top Level Domains: "
+ Arrays.toString(tldsToAddArray));
- DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS,
tldsToAddArray);
+ LOG.info("Adding the following additional Top Level Domains: "
+ additionalTLDs);
+ DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS,
additionalTLDs.toArray(new String[0]));
} catch (IllegalStateException ex) {
//
}
@@ -549,30 +546,4 @@ public class ClientRegistrationService {
this.userRole = userRole;
}
- private static class ClientComparator implements Comparator<Client> {
-
- @Override
- public int compare(Client c1, Client c2) {
- // or the registration date comparison - this can be driven from UI
- // example, Sort Clients By Name/Date/etc
- return c1.getApplicationName().compareTo(c2.getApplicationName());
- }
-
- }
- private static class TokenComparator implements
Comparator<ServerAccessToken> {
-
- @Override
- public int compare(ServerAccessToken t1, ServerAccessToken t2) {
- return Long.compare(t1.getIssuedAt(), t2.getIssuedAt());
- }
-
- }
- private static class CodeGrantComparator implements
Comparator<ServerAuthorizationCodeGrant> {
-
- @Override
- public int compare(ServerAuthorizationCodeGrant g1,
ServerAuthorizationCodeGrant g2) {
- return Long.compare(g1.getIssuedAt(), g2.getIssuedAt());
- }
-
- }
}
diff --git
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientTokens.java
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientTokens.java
index 03f6a1b..90a0992 100644
---
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientTokens.java
+++
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientTokens.java
@@ -18,8 +18,8 @@
*/
package org.apache.cxf.fediz.service.oidc.clients;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.Collection;
+import java.util.Collections;
import org.apache.cxf.rs.security.oauth2.common.Client;
import org.apache.cxf.rs.security.oauth2.common.ServerAccessToken;
@@ -27,11 +27,11 @@ import
org.apache.cxf.rs.security.oauth2.tokens.refresh.RefreshToken;
public class ClientTokens {
private Client client;
- private List<ServerAccessToken> accessTokens = new LinkedList<>();
- private List<RefreshToken> refreshTokens = new LinkedList<>();
+ private Collection<ServerAccessToken> accessTokens =
Collections.emptyList();
+ private Collection<RefreshToken> refreshTokens = Collections.emptyList();
public ClientTokens(Client c,
- List<ServerAccessToken> accessTokens,
- List<RefreshToken> refreshTokens) {
+ Collection<ServerAccessToken> accessTokens,
+ Collection<RefreshToken> refreshTokens) {
this.client = c;
this.accessTokens = accessTokens;
this.refreshTokens = refreshTokens;
@@ -39,10 +39,10 @@ public class ClientTokens {
public Client getClient() {
return client;
}
- public List<ServerAccessToken> getAccessTokens() {
+ public Collection<ServerAccessToken> getAccessTokens() {
return accessTokens;
}
- public List<RefreshToken> getRefreshTokens() {
+ public Collection<RefreshToken> getRefreshTokens() {
return refreshTokens;
}
}
diff --git
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/logout/LogoutService.java
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/logout/LogoutService.java
index 920843a..a3e7df0 100644
---
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/logout/LogoutService.java
+++
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/logout/LogoutService.java
@@ -110,12 +110,13 @@ public class LogoutService extends JoseJwtConsumer {
}
return new IdToken(token.getClaims());
}
- private URI getClientLogoutUri(Client client, MultivaluedMap<String,
String> params) {
+
+ private static URI getClientLogoutUri(final Client client, final
MultivaluedMap<String, String> params) {
String logoutUriProp = client.getProperties().get(CLIENT_LOGOUT_URIS);
// logoutUriProp is guaranteed to be not null at this point
String[] uris = logoutUriProp.split(" ");
- String uriStr = null;
String clientLogoutUriParam = params.getFirst(CLIENT_LOGOUT_URI);
+ final String uriStr;
if (uris.length > 1) {
if (clientLogoutUriParam == null
|| !new
HashSet<>(Arrays.asList(uris)).contains(clientLogoutUriParam)) {
@@ -154,11 +155,12 @@ public class LogoutService extends JoseJwtConsumer {
}
return c;
}
- private URI getAbsoluteIdpLogoutUri(Client client, MultivaluedMap<String,
String> params) {
- UriBuilder ub = mc.getUriInfo().getAbsolutePathBuilder();
- ub.path(relativeIdpLogoutUri);
- ub.queryParam("wreply", getClientLogoutUri(client, params));
- ub.queryParam(OAuthConstants.CLIENT_ID, client.getClientId());
+
+ private URI getAbsoluteIdpLogoutUri(final Client client, final
MultivaluedMap<String, String> params) {
+ UriBuilder ub = mc.getUriInfo().getAbsolutePathBuilder()
+ .path(relativeIdpLogoutUri)
+ .queryParam("wreply", getClientLogoutUri(client, params))
+ .queryParam(OAuthConstants.CLIENT_ID, client.getClientId());
return ub.build().normalize();
}