1 22 23 package org.jboss.test.security.test; 24 25 import java.util.HashMap ; 26 import java.security.acl.Group ; 27 import javax.security.auth.callback.CallbackHandler ; 28 import javax.security.auth.login.Configuration ; 29 import javax.security.auth.login.AppConfigurationEntry ; 30 import javax.security.auth.login.LoginException ; 31 32 import org.jboss.security.plugins.JaasSecurityManager; 33 import org.jboss.security.auth.callback.SecurityAssociationHandler; 34 import org.jboss.security.auth.spi.UsernamePasswordLoginModule; 35 import org.jboss.security.SimplePrincipal; 36 import org.jboss.util.TimedCachePolicy; 37 import org.jboss.logging.Logger; 38 import junit.framework.TestCase; 39 40 45 public class JaasSecurityManagerUnitTestCase 46 extends TestCase 47 { 48 static Logger log = Logger.getLogger(JaasSecurityManagerUnitTestCase.class); 49 50 public JaasSecurityManagerUnitTestCase(String name) 51 { 52 super(name); 53 } 54 55 59 protected void setUp() throws Exception 60 { 61 super.setUp(); 62 Configuration.setConfiguration(new MyConfig()); 63 } 64 65 69 public void testStringCharArrayCredential() 70 { 71 SimplePrincipal jduke = new SimplePrincipal("jduke"); 72 CallbackHandler handler = new SecurityAssociationHandler(jduke, "theduke".toCharArray()); 73 JaasSecurityManager sm = new JaasSecurityManager("testStringCharArrayCredential", handler); 74 TimedCachePolicy cache = new TimedCachePolicy(600, true, 10); 75 cache.create(); 76 cache.start(); 77 sm.setCachePolicy(cache); 78 79 assertTrue(sm.isValid(jduke, "theduke")); 81 assertTrue(sm.isValid(jduke, "theduke")); 83 assertTrue(sm.isValid(jduke, "theduke".toCharArray())); 85 } 86 90 public void testCharArrayStringCredential() 91 { 92 SimplePrincipal jduke = new SimplePrincipal("jduke"); 93 CallbackHandler handler = new SecurityAssociationHandler(jduke, "theduke".toCharArray()); 94 JaasSecurityManager sm = new JaasSecurityManager("testStringCharArrayCredential", handler); 95 TimedCachePolicy cache = new TimedCachePolicy(600, true, 10); 96 cache.create(); 97 cache.start(); 98 sm.setCachePolicy(cache); 99 100 CountedLoginModule.validateCount = 0; 102 assertTrue(sm.isValid(jduke, "theduke".toCharArray())); 104 assertTrue(sm.isValid(jduke, "theduke".toCharArray())); 106 assertTrue(sm.isValid(jduke, "theduke")); 108 } 109 110 113 static class MyConfig extends Configuration 114 { 115 AppConfigurationEntry [] entry; 116 MyConfig() 117 { 118 entry = new AppConfigurationEntry [1]; 119 HashMap opts = new HashMap (); 120 entry[0] = new AppConfigurationEntry (CountedLoginModule.class.getName(), 121 AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, opts); 122 } 123 124 public AppConfigurationEntry [] getAppConfigurationEntry(String appName) 125 { 126 return entry; 127 } 128 public void refresh() 129 { 130 } 131 } 132 133 137 public static class CountedLoginModule extends UsernamePasswordLoginModule 138 { 139 static int validateCount = 0; 140 141 protected boolean validatePassword(String inputPassword, String expectedPassword) 142 { 143 validateCount ++; 144 log.info("validatePassword, validateCount="+validateCount); 145 if( validateCount > 1 ) 146 { 147 IllegalStateException ex = new IllegalStateException ("Too many validation calls: "+validateCount); 148 super.setValidateError(ex); 149 return false; 150 } 151 return super.validatePassword(inputPassword, expectedPassword); 152 } 153 154 protected String getUsersPassword() throws LoginException 155 { 156 return "theduke"; 157 } 158 159 protected Group [] getRoleSets() throws LoginException 160 { 161 return new Group [0]; 162 } 163 } 164 } 165 | Popular Tags |