1 28 package net.sf.jguard.ext.authorization; 29 30 import java.util.HashMap ; 31 import java.util.Iterator ; 32 import java.util.List ; 33 import java.util.Map ; 34 import java.util.logging.Level ; 35 import java.util.logging.Logger ; 36 37 import net.sf.ehcache.CacheException; 38 import net.sf.jguard.core.CoreConstants; 39 import net.sf.jguard.core.authorization.permissions.PermissionUtils; 40 import net.sf.jguard.core.authorization.policy.MultipleAppPolicy; 41 import net.sf.jguard.ext.SecurityConstants; 42 import net.sf.jguard.ext.authorization.manager.AuthorizationManager; 43 import net.sf.jguard.ext.util.XMLUtils; 44 45 import org.dom4j.Document; 46 import org.dom4j.Element; 47 48 53 public class AuthorizationHelper { 54 55 private static final Logger logger = Logger 56 .getLogger(AuthorizationHelper.class.getName()); 57 58 59 65 public static AuthorizationManager initAuthorization(Map authorizationOptions,String applicationName){ 66 67 68 if ( !("true".equals(authorizationOptions.get(SecurityConstants.AUTHORIZATION_PERMISSION_RESOLUTION_CACHING)))){ 70 PermissionUtils.setCachesEnabled(false); 71 }else{ 72 try { 74 PermissionUtils.createCaches(); 75 PermissionUtils.setCachesEnabled(true); 76 } catch (CacheException e) { 77 logger.warning("Failed to activate permission resolution caching : " + e.getMessage()); 78 PermissionUtils.setCachesEnabled(false); 79 } 80 } 81 82 AuthorizationManager am = null; 84 try { 85 authorizationOptions.put(CoreConstants.APPLICATION_NAME,applicationName); 87 if (logger.isLoggable(Level.FINEST)) { 88 logger.finest(" authorizationManagerOptions="+ authorizationOptions); 89 } 90 AuthorizationManagerFactory.createAuthorizationManager(authorizationOptions); 91 am = AuthorizationManagerFactory.getAuthorizationManager(); 92 93 } catch (AuthorizationException e) { 94 logger.severe("AuthorizationException : "+e.getMessage()); 95 throw new IllegalArgumentException (e.getMessage()); 96 } 97 98 99 100 101 return am; 102 } 103 104 110 public static Map loadConfiguration(String configurationLocation,String appHomePath){ 111 Map authorizationMap = new HashMap (); 112 Document doc = XMLUtils.read(configurationLocation); 113 114 Element authorization = doc.getRootElement().element(SecurityConstants.AUTHORIZATION); 115 Element scope = authorization.element(SecurityConstants.SCOPE); 116 if (scope != null){ 117 authorizationMap.put(SecurityConstants.SCOPE, scope.getTextTrim()); 118 } 119 120 Element permissionResolutionCaching = authorization.element(SecurityConstants.AUTHORIZATION_PERMISSION_RESOLUTION_CACHING); 121 if (permissionResolutionCaching != null){ 122 authorizationMap.put(SecurityConstants.AUTHORIZATION_PERMISSION_RESOLUTION_CACHING, permissionResolutionCaching.getTextTrim()); 123 } 124 authorizationMap.put(SecurityConstants.AUTHORIZATION_MANAGER,authorization.element(SecurityConstants.AUTHORIZATION_MANAGER).getTextTrim()); 125 126 List authorizationList = authorization.element(SecurityConstants.AUTHORIZATION_MANAGER_OPTIONS).elements(SecurityConstants.OPTION); 127 Iterator itAuthorizationOptions = authorizationList.iterator(); 128 while(itAuthorizationOptions.hasNext()){ 129 Element option = (Element)itAuthorizationOptions.next(); 130 String name = option.element(CoreConstants.NAME).getTextTrim(); 131 String value = option.element(SecurityConstants.VALUE_MARKUP).getTextTrim(); 132 if(SecurityConstants.AUTHORIZATION_XML_FILE_LOCATION.equals(name)||SecurityConstants.AUTHORIZATION_DATABASE_FILE_LOCATION.equals(name)){ 133 value=appHomePath+value; 134 } 135 authorizationMap.put(name,value); 136 } 137 return authorizationMap; 138 } 139 140 } 141 | Popular Tags |