Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 5E2BD200B53 for ; Tue, 12 Jul 2016 18:34:34 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 5CB84160A56; Tue, 12 Jul 2016 16:34:34 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 7EC2F160A53 for ; Tue, 12 Jul 2016 18:34:33 +0200 (CEST) Received: (qmail 24567 invoked by uid 500); 12 Jul 2016 16:34:32 -0000 Mailing-List: contact commits-help@geode.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@geode.incubator.apache.org Delivered-To: mailing list commits@geode.incubator.apache.org Received: (qmail 24557 invoked by uid 99); 12 Jul 2016 16:34:32 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 12 Jul 2016 16:34:32 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id 3FD0BC0A84 for ; Tue, 12 Jul 2016 16:34:32 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -4.646 X-Spam-Level: X-Spam-Status: No, score=-4.646 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-1.426] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id twJi__7ncOXg for ; Tue, 12 Jul 2016 16:34:30 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with SMTP id 29F275F253 for ; Tue, 12 Jul 2016 16:34:29 +0000 (UTC) Received: (qmail 24433 invoked by uid 99); 12 Jul 2016 16:34:28 -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, 12 Jul 2016 16:34:28 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 0F30DDFF68; Tue, 12 Jul 2016 16:34:27 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: jinmeiliao@apache.org To: commits@geode.incubator.apache.org Message-Id: <4b44a59dbef847aeb1f5c4f3b4b95193@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: incubator-geode git commit: GEODE-1571: fix nightly failure Date: Tue, 12 Jul 2016 16:34:27 +0000 (UTC) archived-at: Tue, 12 Jul 2016 16:34:34 -0000 Repository: incubator-geode Updated Branches: refs/heads/develop b35d330fc -> dbdf76c34 GEODE-1571: fix nightly failure Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/dbdf76c3 Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/dbdf76c3 Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/dbdf76c3 Branch: refs/heads/develop Commit: dbdf76c341b7aa146101b8e055e893e97ec87c0f Parents: b35d330 Author: Jinmei Liao Authored: Tue Jul 12 09:31:47 2016 -0700 Committer: Jinmei Liao Committed: Tue Jul 12 09:31:47 2016 -0700 ---------------------------------------------------------------------- .../internal/security/GeodeSecurityUtil.java | 30 ++++++++++++++++++-- .../security/shiro/CustomAuthRealm.java | 17 ++++------- .../GeodeSecurityUtilWithIniFileJUnitTest.java | 1 - .../gemfire/tools/pulse/tests/Server.java | 7 +---- 4 files changed, 34 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/dbdf76c3/geode-core/src/main/java/com/gemstone/gemfire/internal/security/GeodeSecurityUtil.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/security/GeodeSecurityUtil.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/security/GeodeSecurityUtil.java index 9a3be04..ecf16f6 100644 --- a/geode-core/src/main/java/com/gemstone/gemfire/internal/security/GeodeSecurityUtil.java +++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/security/GeodeSecurityUtil.java @@ -315,9 +315,11 @@ public class GeodeSecurityUtil { // only set up shiro realm if user has implemented SecurityManager else if (!StringUtils.isBlank(securityConfig)) { - Realm realm = new CustomAuthRealm(securityProps); - org.apache.shiro.mgt.SecurityManager securityManager = new DefaultSecurityManager(realm); - SecurityUtils.setSecurityManager(securityManager); + securityManager = getObject(securityConfig, SecurityManager.class); + securityManager.init(securityProps); + Realm realm = new CustomAuthRealm(securityManager); + org.apache.shiro.mgt.SecurityManager shiroManager = new DefaultSecurityManager(realm); + SecurityUtils.setSecurityManager(shiroManager); } else { SecurityUtils.setSecurityManager(null); @@ -373,6 +375,26 @@ public class GeodeSecurityUtil { } + public static T getObject(String factoryName, Class clazz) { + Object object = null; + + if (StringUtils.isBlank(factoryName)) { + return null; + } + try { + Method instanceGetter = ClassLoadUtil.methodFromName(factoryName); + object = instanceGetter.invoke(null, (Object[]) null); + } + catch (Exception ex) { + throw new AuthenticationRequiredException(ex.toString(), ex); + } + + if(!clazz.isAssignableFrom(object.getClass())){ + throw new GemFireSecurityException("Expecting a "+clazz.getName()+" interface."); + } + return (T)object; + } + public static Object getObject(String factoryName) { if (StringUtils.isBlank(factoryName)) { return null; @@ -386,6 +408,8 @@ public class GeodeSecurityUtil { } } + + public static boolean isSecurityRequired(Properties securityProps){ String authenticator = securityProps.getProperty(SECURITY_CLIENT_AUTHENTICATOR); String securityManager = securityProps.getProperty(SECURITY_MANAGER); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/dbdf76c3/geode-core/src/main/java/com/gemstone/gemfire/internal/security/shiro/CustomAuthRealm.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/security/shiro/CustomAuthRealm.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/security/shiro/CustomAuthRealm.java index 48f6a40..f31189d 100644 --- a/geode-core/src/main/java/com/gemstone/gemfire/internal/security/shiro/CustomAuthRealm.java +++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/security/shiro/CustomAuthRealm.java @@ -16,8 +16,6 @@ */ package com.gemstone.gemfire.internal.security.shiro; -import static com.gemstone.gemfire.distributed.ConfigurationProperties.SECURITY_MANAGER; - import java.security.Principal; import java.util.Properties; @@ -35,9 +33,8 @@ import org.apache.shiro.subject.PrincipalCollection; import com.gemstone.gemfire.internal.security.GeodeSecurityUtil; import com.gemstone.gemfire.management.internal.security.ResourceConstants; -import com.gemstone.gemfire.security.SecurityManager; -import com.gemstone.gemfire.security.GemFireSecurityException; import com.gemstone.gemfire.security.GeodePermission; +import com.gemstone.gemfire.security.SecurityManager; public class CustomAuthRealm extends AuthorizingRealm{ public static final String REALM_NAME = "CUSTOMAUTHREALM"; @@ -45,14 +42,12 @@ public class CustomAuthRealm extends AuthorizingRealm{ private static final Logger logger = LogManager.getLogger(CustomAuthRealm.class); private SecurityManager securityManager = null; - public CustomAuthRealm (Properties securityProps) { - Object manager = GeodeSecurityUtil.getObject(securityProps.getProperty(SECURITY_MANAGER)); + public CustomAuthRealm(SecurityManager securityManager) { + this.securityManager = securityManager; + } - if(!(manager instanceof SecurityManager)){ - throw new GemFireSecurityException("Integrated Security requires SecurityManager interface."); - } - securityManager = (SecurityManager) manager; - securityManager.init(securityProps); + public CustomAuthRealm (String authenticatorFactory) { + this.securityManager = GeodeSecurityUtil.getObject(authenticatorFactory, SecurityManager.class); } @Override http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/dbdf76c3/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/GeodeSecurityUtilWithIniFileJUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/GeodeSecurityUtilWithIniFileJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/GeodeSecurityUtilWithIniFileJUnitTest.java index 6a3d382..487548d 100644 --- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/GeodeSecurityUtilWithIniFileJUnitTest.java +++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/GeodeSecurityUtilWithIniFileJUnitTest.java @@ -136,5 +136,4 @@ public class GeodeSecurityUtilWithIniFileJUnitTest { private void assertNotAuthorized(GeodePermission context){ assertThatThrownBy(()-> GeodeSecurityUtil.authorize(context)).isInstanceOf(GemFireSecurityException.class).hasMessageContaining(context.toString()); } - } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/dbdf76c3/geode-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/Server.java ---------------------------------------------------------------------- diff --git a/geode-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/Server.java b/geode-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/Server.java index 429a11b..9356eb9 100644 --- a/geode-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/Server.java +++ b/geode-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/Server.java @@ -18,8 +18,6 @@ */ package com.vmware.gemfire.tools.pulse.tests; -import static com.gemstone.gemfire.distributed.ConfigurationProperties.*; - import java.io.IOException; import java.lang.management.ManagementFactory; import java.net.Inet4Address; @@ -28,7 +26,6 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.util.HashMap; import java.util.Map; -import java.util.Properties; import javax.management.InstanceAlreadyExistsException; import javax.management.MBeanRegistrationException; @@ -75,9 +72,7 @@ public class Server { Map env = new HashMap(); // set up Shiro Security Manager - Properties securityProps = new Properties(); - securityProps.put(SECURITY_MANAGER, JSONAuthorization.class.getName() + ".create"); - Realm realm = new CustomAuthRealm(securityProps); + Realm realm = new CustomAuthRealm(JSONAuthorization.class.getName() + ".create"); SecurityManager securityManager = new DefaultSecurityManager(realm); SecurityUtils.setSecurityManager(securityManager);