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 42089113D4 for ; Wed, 20 Aug 2014 13:17:01 +0000 (UTC) Received: (qmail 92365 invoked by uid 500); 20 Aug 2014 13:17:01 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 92306 invoked by uid 500); 20 Aug 2014 13:17:00 -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 92297 invoked by uid 99); 20 Aug 2014 13:17:00 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 20 Aug 2014 13:17:00 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id A3F59954521; Wed, 20 Aug 2014 13:17:00 +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: <0bf50897508443a694f368aa72a6315d@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: git commit: [CXF-5669] Prototyping ClientRegistrationProvider interface Date: Wed, 20 Aug 2014 13:17:00 +0000 (UTC) Repository: cxf Updated Branches: refs/heads/master 435afae71 -> 30e4e725a [CXF-5669] Prototyping ClientRegistrationProvider interface Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/30e4e725 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/30e4e725 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/30e4e725 Branch: refs/heads/master Commit: 30e4e725a3819b654b1a2d5c0fa9884c8fce641b Parents: 435afae Author: Sergey Beryozkin Authored: Wed Aug 20 14:16:42 2014 +0100 Committer: Sergey Beryozkin Committed: Wed Aug 20 14:16:42 2014 +0100 ---------------------------------------------------------------------- .../DefaultEHCacheOAuthDataProvider.java | 31 +++++++++++++++++++- .../DefaultEncryptingOAuthDataProvider.java | 29 ++++++++++++++++-- 2 files changed, 56 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/30e4e725/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/DefaultEHCacheOAuthDataProvider.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/DefaultEHCacheOAuthDataProvider.java b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/DefaultEHCacheOAuthDataProvider.java index 78ab702..23891d2 100644 --- a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/DefaultEHCacheOAuthDataProvider.java +++ b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/DefaultEHCacheOAuthDataProvider.java @@ -20,6 +20,8 @@ package org.apache.cxf.rs.security.oauth2.provider; import java.io.File; import java.net.URL; +import java.util.ArrayList; +import java.util.List; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; @@ -32,13 +34,15 @@ import net.sf.ehcache.config.DiskStoreConfiguration; import org.apache.cxf.Bus; import org.apache.cxf.BusFactory; +import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.jaxrs.utils.ResourceUtils; 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.tokens.refresh.RefreshToken; import org.apache.cxf.rs.security.oauth2.utils.EHCacheUtil; -public class DefaultEHCacheOAuthDataProvider extends AbstractOAuthDataProvider { +public class DefaultEHCacheOAuthDataProvider extends AbstractOAuthDataProvider + implements ClientRegistrationProvider { public static final String CLIENT_CACHE_KEY = "cxf.oauth2.client.cache"; public static final String ACCESS_TOKEN_CACHE_KEY = "cxf.oauth2.accesstoken.cache"; public static final String REFRESH_TOKEN_CACHE_KEY = "cxf.oauth2.refreshtoken.cache"; @@ -71,6 +75,29 @@ public class DefaultEHCacheOAuthDataProvider extends AbstractOAuthDataProvider { } @Override + public void setClient(Client client) { + putCacheValue(clientCache, client.getClientId(), client, 0); + + } + + @Override + public Client removeClient(String clientId) { + Client c = getClient(clientId); + clientCache.remove(clientId); + return c; + } + + @Override + public List getClients() { + List keys = CastUtils.cast(clientCache.getKeys()); + List clients = new ArrayList(keys.size()); + for (String key : keys) { + clients.add(getClient(key)); + } + return clients; + } + + @Override public ServerAccessToken getAccessToken(String accessToken) throws OAuthServiceException { return getCacheValue(accessTokenCache, accessToken, ServerAccessToken.class); } @@ -165,4 +192,6 @@ public class DefaultEHCacheOAuthDataProvider extends AbstractOAuthDataProvider { accessTokenCache = createCache(cacheManager, accessTokenKey); refreshTokenCache = createCache(cacheManager, refreshTokenKey); } + + } http://git-wip-us.apache.org/repos/asf/cxf/blob/30e4e725/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/DefaultEncryptingOAuthDataProvider.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/DefaultEncryptingOAuthDataProvider.java b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/DefaultEncryptingOAuthDataProvider.java index bb510af..94f1886 100644 --- a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/DefaultEncryptingOAuthDataProvider.java +++ b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/DefaultEncryptingOAuthDataProvider.java @@ -18,8 +18,10 @@ */ package org.apache.cxf.rs.security.oauth2.provider; +import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; +import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -32,11 +34,12 @@ import org.apache.cxf.rs.security.oauth2.utils.crypto.CryptoUtils; import org.apache.cxf.rs.security.oauth2.utils.crypto.KeyProperties; import org.apache.cxf.rs.security.oauth2.utils.crypto.ModelEncryptionSupport; -public class DefaultEncryptingOAuthDataProvider extends AbstractOAuthDataProvider { +public class DefaultEncryptingOAuthDataProvider extends AbstractOAuthDataProvider + implements ClientRegistrationProvider { protected SecretKey key; private Set tokens = Collections.synchronizedSet(new HashSet()); private ConcurrentHashMap refreshTokens = new ConcurrentHashMap(); - + private ConcurrentHashMap clientsMap = new ConcurrentHashMap(); public DefaultEncryptingOAuthDataProvider(String algo, int keySize) { this(new KeyProperties(algo, keySize)); } @@ -49,10 +52,30 @@ public class DefaultEncryptingOAuthDataProvider extends AbstractOAuthDataProvide @Override public Client getClient(String clientId) throws OAuthServiceException { - return null; + return ModelEncryptionSupport.decryptClient(clientsMap.get(clientId), key); } @Override + public void setClient(Client client) { + clientsMap.put(client.getClientId(), ModelEncryptionSupport.encryptClient(client, key)); + + } + @Override + public Client removeClient(String clientId) { + Client client = getClient(clientId); + clientsMap.remove(clientId); + return client; + } + @Override + public List getClients() { + List clients = new ArrayList(clientsMap.size()); + for (String clientKey : clientsMap.keySet()) { + clients.add(getClient(clientKey)); + } + return clients; + } + + @Override public ServerAccessToken getAccessToken(String accessToken) throws OAuthServiceException { return ModelEncryptionSupport.decryptAccessToken(this, accessToken, key); }