1 17 package org.apache.geronimo.security.jaas; 18 19 import java.io.Externalizable ; 20 import java.io.Serializable ; 21 import java.rmi.Remote ; 22 import java.util.HashMap ; 23 import java.util.Iterator ; 24 import java.util.Map ; 25 import javax.security.auth.spi.LoginModule ; 26 27 import org.apache.geronimo.common.GeronimoSecurityException; 28 29 36 public class JaasLoginModuleConfiguration implements Serializable { 37 private boolean serverSide; 38 private String loginDomainName; 39 private LoginModuleControlFlag flag; 40 private String loginModuleName; 41 private Map options; 42 private transient LoginModule loginModule; 43 44 public JaasLoginModuleConfiguration(String loginModuleName, LoginModuleControlFlag flag, Map options, boolean serverSide, String loginDomainName) { 45 this.serverSide = serverSide; 46 this.flag = flag; 47 this.loginModuleName = loginModuleName; 48 this.options = options; 49 this.loginDomainName = loginDomainName; 50 } 51 public JaasLoginModuleConfiguration(String loginModuleName, LoginModuleControlFlag flag, Map options, boolean serverSide) { 52 this(loginModuleName, flag, options, serverSide, null); 53 } 54 55 public String getLoginModuleClassName() { 56 return loginModuleName; 57 } 58 59 public LoginModule getLoginModule(ClassLoader loader) throws GeronimoSecurityException { 60 if(loginModule == null) { 61 try { 62 loginModule = (LoginModule ) loader.loadClass(loginModuleName).newInstance(); 63 } catch (Exception e) { 64 throw new GeronimoSecurityException("Unable to instantiate login module", e); 65 } 66 } 67 return loginModule; 68 } 69 70 public boolean isServerSide() { 71 return serverSide; 72 } 73 74 public LoginModuleControlFlag getFlag() { 75 return flag; 76 } 77 78 public Map getOptions() { 79 return options; 80 } 81 82 public String getLoginDomainName() { 83 return loginDomainName; 84 } 85 86 90 public JaasLoginModuleConfiguration getSerializableCopy() { 91 Map other = new HashMap (); 92 for (Iterator it = options.keySet().iterator(); it.hasNext();) { 93 String key = (String ) it.next(); 94 Object value = options.get(key); 95 if(value instanceof Serializable || value instanceof Externalizable || value instanceof Remote ) { 96 other.put(key, value); 97 } 98 } 99 100 return new JaasLoginModuleConfiguration(loginModuleName, flag, other, serverSide, loginDomainName); 101 } 102 } 103 | Popular Tags |