1 6 package com.nightlabs.ipanema.base.login; 7 8 import java.util.ArrayList ; 9 import java.util.HashMap ; 10 11 import javax.security.auth.login.AppConfigurationEntry ; 12 import javax.security.auth.login.Configuration ; 13 14 import org.apache.log4j.Logger; 15 16 import com.nightlabs.config.Config; 17 import com.nightlabs.config.ConfigException; 18 19 22 public class IpanemaSecurityConfiguration extends Configuration { 23 public static final Logger LOGGER = Logger.getLogger(IpanemaSecurityConfiguration.class); 24 25 private LoginConfigModule loginConfigModule = null; 26 private HashMap entries = new HashMap (); 27 28 public IpanemaSecurityConfiguration(){ 29 try { 30 loginConfigModule = (LoginConfigModule) Config.sharedInstance().createConfigModule(LoginConfigModule.class); 31 refresh(); 32 } catch (ConfigException e) { 33 throw new RuntimeException (e); 34 } 35 } 36 37 38 41 public void refresh() { 42 LOGGER.debug("Refreshing entries"); 43 ArrayList configEntries = loginConfigModule.getSecurityConfigurations(); 44 this.entries.clear(); 45 for (int i=0; i<configEntries.size(); i++){ 46 IpanemaSecurityConfigurationEntry confEntry = (IpanemaSecurityConfigurationEntry)configEntries.get(i); 47 LOGGER.debug("Adding entry for "+confEntry.getApplicationName()+"("+confEntry.getLoginModuleName()+", "+confEntry.getControlFlag()+", "+confEntry.getOptions()+")"); 48 LOGGER.debug("Control Flag is: "+strToLoginModuleControlFlag(confEntry.getControlFlag())); 49 this.entries.put( 50 confEntry.getApplicationName(), 51 new AppConfigurationEntry ( 52 confEntry.getLoginModuleName(), 53 strToLoginModuleControlFlag(confEntry.getControlFlag()), 54 confEntry.getOptions() 55 ) 56 ); 57 } 58 } 59 60 63 public AppConfigurationEntry [] getAppConfigurationEntry(String applicationName) { 64 if (entries.containsKey(applicationName)){ 66 return new AppConfigurationEntry []{(AppConfigurationEntry )entries.get(applicationName)}; 68 } 69 return null; 70 } 71 72 private static IpanemaSecurityConfiguration configInstance = null; 73 public static void declareConfiguration(){ 74 Class configClass = null; if (configClass == null) 76 LOGGER.debug("Current security configuration is null"); 77 else 78 LOGGER.debug("Current security configuration is of type: "+configClass.getName()); 79 80 if (configClass != IpanemaSecurityConfiguration.class){ 81 configInstance = new IpanemaSecurityConfiguration(); 82 Configuration.setConfiguration(configInstance); 83 LOGGER.debug("Set configuration to type: "+Configuration.getConfiguration().getClass().getName()); 84 } 85 } 86 87 88 private static AppConfigurationEntry.LoginModuleControlFlag strToLoginModuleControlFlag(String flag){ 89 if (flag.toLowerCase().equals(IpanemaSecurityConfigurationEntry.MODULE_CONTROL_FLAG_REQUIRED)) 90 return AppConfigurationEntry.LoginModuleControlFlag.REQUIRED; 91 else if (flag.toLowerCase().equals(IpanemaSecurityConfigurationEntry.MODULE_CONTROL_FLAG_REQUISITE)) 92 return AppConfigurationEntry.LoginModuleControlFlag.REQUISITE; 93 else if (flag.toLowerCase().equals(IpanemaSecurityConfigurationEntry.MODULE_CONTROL_FLAG_SUFFICIENT)) 94 return AppConfigurationEntry.LoginModuleControlFlag.SUFFICIENT; 95 else if (flag.toLowerCase().equals(IpanemaSecurityConfigurationEntry.MODULE_CONTROL_FLAG_OPTIONAL)) 96 return AppConfigurationEntry.LoginModuleControlFlag.OPTIONAL; 97 98 return AppConfigurationEntry.LoginModuleControlFlag.REQUIRED; 99 } 100 101 } 102 | Popular Tags |