1 17 package org.apache.geronimo.security.jaas; 18 19 import java.util.HashMap ; 20 import java.util.Map ; 21 import javax.security.auth.Subject ; 22 import javax.security.auth.callback.CallbackHandler ; 23 import javax.security.auth.login.LoginException ; 24 import javax.security.auth.spi.LoginModule ; 25 26 import junit.framework.TestCase; 27 28 import org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal; 29 import org.apache.geronimo.security.jaas.server.JaasSecuritySession; 30 import org.apache.geronimo.security.jaas.server.JaasLoginModuleConfiguration; 31 32 33 36 public class NoLoginModuleReuseTest extends TestCase { 37 38 public void testNoLoginModuleReuse() throws Exception { 39 JaasLoginModuleConfiguration m1 = new JaasLoginModuleConfiguration(MockLoginModule.class.getName(), LoginModuleControlFlag.REQUIRED, new HashMap (), true, "D1", true, MockLoginModule.class.getClassLoader()); 40 doSecurityContextLogin(m1); 41 doSecurityContextLogin(m1); 42 } 43 44 private void doSecurityContextLogin(JaasLoginModuleConfiguration m1) throws LoginException { 45 JaasSecuritySession c = new JaasSecuritySession("realm", new JaasLoginModuleConfiguration[] {m1}, new HashMap (), this.getClass().getClassLoader()); 46 Subject s = c.getSubject(); 47 c.getLoginModule(0).initialize(s, null, null, null); 48 c.getLoginModule(0).login(); 49 c.getLoginModule(0).commit(); 50 } 51 52 public static class MockLoginModule implements LoginModule { 53 54 private Subject subject; 55 private boolean used = false; 56 57 public void initialize(Subject subject, CallbackHandler callbackHandler, Map map, Map map1) { 58 this.subject = subject; 59 } 60 61 public boolean login() throws LoginException { 62 if (used) { 63 throw new LoginException ("already used"); 64 } 65 used = true; 66 return true; 67 } 68 69 public boolean commit() throws LoginException { 70 subject.getPrincipals().add(new GeronimoGroupPrincipal("Foo")); 71 return true; 72 } 73 74 public boolean abort() throws LoginException { 75 return false; 76 } 77 78 public boolean logout() throws LoginException { 79 return false; 80 } 81 } 82 83 } 84 | Popular Tags |