1 18 package org.apache.activemq.jaas; 19 20 import java.io.File ; 21 import java.io.IOException ; 22 import java.net.InetAddress ; 23 import java.util.HashSet ; 24 import java.util.Hashtable ; 25 import java.util.Properties ; 26 import javax.naming.Context ; 27 import javax.naming.NameClassPair ; 28 import javax.naming.NamingEnumeration ; 29 import javax.naming.directory.DirContext ; 30 import javax.naming.directory.InitialDirContext ; 31 import javax.security.auth.callback.Callback ; 32 import javax.security.auth.callback.CallbackHandler ; 33 import javax.security.auth.callback.NameCallback ; 34 import javax.security.auth.callback.PasswordCallback ; 35 import javax.security.auth.callback.UnsupportedCallbackException ; 36 import javax.security.auth.login.LoginContext ; 37 import javax.security.auth.login.LoginException ; 38 39 import junit.framework.TestCase; 40 41 import org.apache.activemq.jaas.ldap.MutableServerStartupConfiguration; 42 import org.apache.activemq.jaas.ldap.ServerContextFactory; 43 import org.apache.ldap.server.configuration.ShutdownConfiguration; 44 import org.apache.ldap.server.jndi.CoreContextFactory; 45 46 47 48 51 public class LDAPLoginModuleTest extends TestCase { 52 53 private static final String PRINCIPAL = "uid=admin,ou=system"; 54 private static final String CREDENTIALS = "secret"; 55 56 public void testNothing() { 57 } 58 59 public void testRunning() throws Exception { 60 61 Hashtable env = new Hashtable (); 62 env.put(Context.PROVIDER_URL, "ldap://localhost:9389"); 63 env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 64 env.put(Context.SECURITY_AUTHENTICATION, "simple"); 65 env.put(Context.SECURITY_PRINCIPAL, PRINCIPAL); 66 env.put(Context.SECURITY_CREDENTIALS, CREDENTIALS); 67 DirContext ctx = new InitialDirContext (env); 68 69 HashSet set = new HashSet (); 73 74 NamingEnumeration list = ctx.list("ou=system"); 75 76 while (list.hasMore()) { 77 NameClassPair ncp = (NameClassPair ) list.next(); 78 set.add(ncp.getName()); 79 } 80 81 assertTrue(set.contains("uid=admin")); 82 assertTrue(set.contains("ou=users")); 83 assertTrue(set.contains("ou=groups")); 84 assertTrue(set.contains("ou=configuration")); 85 assertTrue(set.contains("prefNodeName=sysPrefRoot")); 86 87 } 88 89 public void XtestLogin() throws LoginException { 90 LoginContext context = new LoginContext ("LDAPLogin", new CallbackHandler () { 91 public void handle(Callback [] callbacks) throws IOException , UnsupportedCallbackException { 92 for (int i = 0; i < callbacks.length; i++) { 93 if (callbacks[i] instanceof NameCallback ) { 94 ((NameCallback ) callbacks[i]).setName("first"); 95 } else if (callbacks[i] instanceof PasswordCallback ) { 96 ((PasswordCallback ) callbacks[i]).setPassword("secret".toCharArray()); 97 } else { 98 throw new UnsupportedCallbackException (callbacks[i]); 99 } 100 } 101 } 102 }); 103 context.login(); 104 context.logout(); 105 } 106 107 public void setUp() throws Exception { 108 MutableServerStartupConfiguration startup = new MutableServerStartupConfiguration(); 109 startup.setWorkingDirectory(new File ("target/ldap")); 111 startup.setAllowAnonymousAccess(true); 112 startup.setLdapPort(9389); 113 startup.setEnableNetworking(true); 114 startup.setHost(InetAddress.getByName("localhost")); 115 116 Properties env = new Properties (); 117 env.putAll(startup.toJndiEnvironment()); 118 env.put(Context.INITIAL_CONTEXT_FACTORY, ServerContextFactory.class.getName()); 119 env.put(Context.PROVIDER_URL, "ou=system"); 120 env.put(Context.SECURITY_AUTHENTICATION, "simple"); 121 env.put(Context.SECURITY_PRINCIPAL, PRINCIPAL); 122 env.put(Context.SECURITY_CREDENTIALS, CREDENTIALS); 123 124 new InitialDirContext (env); 126 } 127 128 public void tearDown() throws Exception { 129 Properties env = new Properties (); 130 env.putAll(new ShutdownConfiguration().toJndiEnvironment()); 131 env.put(Context.INITIAL_CONTEXT_FACTORY, CoreContextFactory.class.getName()); 132 env.put(Context.PROVIDER_URL, "ou=system"); 133 env.put(Context.SECURITY_AUTHENTICATION, "simple"); 134 env.put(Context.SECURITY_PRINCIPAL, PRINCIPAL); 135 env.put(Context.SECURITY_CREDENTIALS, CREDENTIALS); 136 137 new InitialDirContext (env); 139 } 140 } 141 | Popular Tags |