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 5CED318475 for ; Tue, 8 Dec 2015 16:25:29 +0000 (UTC) Received: (qmail 24149 invoked by uid 500); 8 Dec 2015 16:25:29 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 24099 invoked by uid 500); 8 Dec 2015 16:25:29 -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 24090 invoked by uid 99); 8 Dec 2015 16:25:29 -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; Tue, 08 Dec 2015 16:25:29 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 1F1B9E03EC; Tue, 8 Dec 2015 16:25:29 +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: X-Mailer: ASF-Git Admin Mailer Subject: cxf git commit: Updating AbstractOAuthProvider with some boilerplate code Date: Tue, 8 Dec 2015 16:25:29 +0000 (UTC) Repository: cxf Updated Branches: refs/heads/3.1.x-fixes dfe90b649 -> c27dc582c Updating AbstractOAuthProvider with some boilerplate code Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/c27dc582 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/c27dc582 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/c27dc582 Branch: refs/heads/3.1.x-fixes Commit: c27dc582c203d01fa8f63f500def10f0ae57d1e4 Parents: dfe90b6 Author: Sergey Beryozkin Authored: Tue Dec 8 16:17:41 2015 +0000 Committer: Sergey Beryozkin Committed: Tue Dec 8 16:25:13 2015 +0000 ---------------------------------------------------------------------- .../provider/AbstractOAuthDataProvider.java | 48 +++++++++++++++++++- .../DefaultEHCacheOAuthDataProvider.java | 1 + 2 files changed, 47 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/c27dc582/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/AbstractOAuthDataProvider.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/AbstractOAuthDataProvider.java b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/AbstractOAuthDataProvider.java index 3c88608..149bff1 100644 --- a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/AbstractOAuthDataProvider.java +++ b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/provider/AbstractOAuthDataProvider.java @@ -18,9 +18,13 @@ */ package org.apache.cxf.rs.security.oauth2.provider; +import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import org.apache.cxf.jaxrs.ext.MessageContext; import org.apache.cxf.rs.security.oauth2.common.AccessTokenRegistration; import org.apache.cxf.rs.security.oauth2.common.Client; import org.apache.cxf.rs.security.oauth2.common.OAuthPermission; @@ -35,6 +39,9 @@ public abstract class AbstractOAuthDataProvider implements OAuthDataProvider, Cl private long accessTokenLifetime = 3600L; private long refreshTokenLifetime; // refresh tokens are eternal by default private boolean recycleRefreshTokens = true; + private Map permissionMap = new HashMap(); + private MessageContext messageContext; + protected AbstractOAuthDataProvider() { } @@ -133,12 +140,20 @@ public abstract class AbstractOAuthDataProvider implements OAuthDataProvider, Cl return currentRefreshToken; } - - @Override public List convertScopeToPermissions(Client client, List requestedScopes) { if (requestedScopes.isEmpty()) { return Collections.emptyList(); + } else if (!permissionMap.isEmpty()) { + List list = new ArrayList(); + for (String scope : requestedScopes) { + OAuthPermission permission = permissionMap.get(scope); + if (permission == null) { + throw new OAuthServiceException("Unexpected scope: " + scope); + } + list.add(permission); + } + return list; } else { throw new OAuthServiceException("Requested scopes can not be mapped"); } @@ -217,9 +232,38 @@ public abstract class AbstractOAuthDataProvider implements OAuthDataProvider, Cl this.recycleRefreshTokens = recycleRefreshTokens; } + public void init() { + } + + public void close() { + } + protected abstract void saveAccessToken(ServerAccessToken serverToken); protected abstract void saveRefreshToken(ServerAccessToken at, RefreshToken refreshToken); protected abstract ServerAccessToken revokeAccessToken(String accessTokenKey); protected abstract RefreshToken revokeRefreshToken(Client client, String refreshTokenKey); protected abstract RefreshToken getRefreshToken(Client client, String refreshTokenKey); + + public Map getPermissionMap() { + return permissionMap; + } + + public void setPermissionMap(Map permissionMap) { + this.permissionMap = permissionMap; + } + + public void setScopes(Map scopes) { + for (Map.Entry entry : scopes.entrySet()) { + OAuthPermission permission = new OAuthPermission(entry.getKey(), entry.getValue()); + permissionMap.put(entry.getKey(), permission); + } + } + + public MessageContext getMessageContext() { + return messageContext; + } + + public void setMessageContext(MessageContext messageContext) { + this.messageContext = messageContext; + } } http://git-wip-us.apache.org/repos/asf/cxf/blob/c27dc582/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 bdf9d10..8a3b514 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 @@ -195,6 +195,7 @@ public class DefaultEHCacheOAuthDataProvider extends AbstractOAuthDataProvider { refreshTokenCache = createCache(cacheManager, refreshTokenKey); } + @Override public void close() { cacheManager.shutdown(); }