From 4d29f01abe22402f00f9826bc4adaecebcbe6ae4 Mon Sep 17 00:00:00 2001 From: John Blum Date: Mon, 7 Nov 2016 16:44:09 -0800 Subject: [PATCH] SGF-559 - Fix bug in enableApacheGeodeSecurity() when resolving the 'isIntegratedSecurity' field on the Geode IntegratedSecurityService. --- .../ApacheShiroSecurityConfiguration.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/springframework/data/gemfire/config/annotation/ApacheShiroSecurityConfiguration.java b/src/main/java/org/springframework/data/gemfire/config/annotation/ApacheShiroSecurityConfiguration.java index a4b4d9df..0051bd0e 100644 --- a/src/main/java/org/springframework/data/gemfire/config/annotation/ApacheShiroSecurityConfiguration.java +++ b/src/main/java/org/springframework/data/gemfire/config/annotation/ApacheShiroSecurityConfiguration.java @@ -26,7 +26,7 @@ import java.util.Map; import org.apache.geode.cache.GemFireCache; import org.apache.geode.internal.security.SecurityService; import org.apache.shiro.SecurityUtils; -import org.apache.shiro.mgt.DefaultSecurityManager; +import org.apache.shiro.mgt.*; import org.apache.shiro.realm.Realm; import org.apache.shiro.spring.LifecycleBeanPostProcessor; import org.springframework.beans.BeansException; @@ -132,8 +132,9 @@ public class ApacheShiroSecurityConfiguration implements BeanFactoryAware { * @see org.apache.shiro.mgt.SecurityManager * @see #registerSecurityManager(org.apache.shiro.mgt.SecurityManager) * @see #enableApacheGeodeSecurity() - * @see #isRealmsPresent() - * @see #getRealms() + * @see #resolveRealms() + * @see #registerSecurityManager(org.apache.shiro.mgt.SecurityManager) + * @see #enableApacheGeodeSecurity() */ @Bean public org.apache.shiro.mgt.SecurityManager shiroSecurityManager(GemFireCache gemfireCache) { @@ -209,8 +210,13 @@ public class ApacheShiroSecurityConfiguration implements BeanFactoryAware { SecurityService securityService = SecurityService.getSecurityService(); if (securityService != null) { + String isIntegratedSecurityFieldName = "isIntegratedSecurity"; + Field isIntegratedSecurity = ReflectionUtils.findField(securityService.getClass(), - "isIntegratedSecurity", Boolean.class); + isIntegratedSecurityFieldName, Boolean.class); + + isIntegratedSecurity = (isIntegratedSecurity != null ? isIntegratedSecurity + : ReflectionUtils.findField(securityService.getClass(), isIntegratedSecurityFieldName, Boolean.TYPE)); if (isIntegratedSecurity != null) { ReflectionUtils.makeAccessible(isIntegratedSecurity);