1 18 package org.apache.activemq.jaas; 19 20 import java.io.IOException ; 21 import java.net.URL ; 22 23 import javax.security.auth.Subject ; 24 import javax.security.auth.callback.Callback ; 25 import javax.security.auth.callback.CallbackHandler ; 26 import javax.security.auth.callback.NameCallback ; 27 import javax.security.auth.callback.PasswordCallback ; 28 import javax.security.auth.callback.UnsupportedCallbackException ; 29 import javax.security.auth.login.FailedLoginException ; 30 import javax.security.auth.login.LoginContext ; 31 import javax.security.auth.login.LoginException ; 32 33 import junit.framework.TestCase; 34 35 36 39 public class PropertiesLoginModuleTest extends TestCase { 40 41 static { 42 String path = System.getProperty("java.security.auth.login.config"); 43 if (path == null) { 44 URL resource = PropertiesLoginModuleTest.class.getClassLoader().getResource("login.config"); 45 if (resource != null) { 46 path = resource.getFile(); 47 System.setProperty("java.security.auth.login.config", path); 48 } 49 } 50 System.out.println("Path to login config: " + path); 51 } 52 53 public void testLogin() throws LoginException { 54 LoginContext context = new LoginContext ("PropertiesLogin", new CallbackHandler () { 55 public void handle(Callback [] callbacks) throws IOException , UnsupportedCallbackException { 56 for (int i = 0; i < callbacks.length; i++) { 57 if (callbacks[i] instanceof NameCallback ) { 58 ((NameCallback ) callbacks[i]).setName("first"); 59 } else if (callbacks[i] instanceof PasswordCallback ) { 60 ((PasswordCallback ) callbacks[i]).setPassword("secret".toCharArray()); 61 } else { 62 throw new UnsupportedCallbackException (callbacks[i]); 63 } 64 } 65 } 66 }); 67 context.login(); 68 69 Subject subject = context.getSubject(); 70 71 assertEquals("Should have three principals", 3, subject.getPrincipals().size()); 72 assertEquals("Should have one user principal", 1, subject.getPrincipals(UserPrincipal.class).size()); 73 assertEquals("Should have two group principals", 2, subject.getPrincipals(GroupPrincipal.class).size()); 74 75 context.logout(); 76 77 assertEquals("Should have zero principals", 0, subject.getPrincipals().size()); 78 } 79 80 public void testBadUseridLogin() throws Exception { 81 LoginContext context = new LoginContext ("PropertiesLogin", new CallbackHandler () { 82 public void handle(Callback [] callbacks) throws IOException , UnsupportedCallbackException { 83 for (int i = 0; i < callbacks.length; i++) { 84 if (callbacks[i] instanceof NameCallback ) { 85 ((NameCallback ) callbacks[i]).setName("BAD"); 86 } else if (callbacks[i] instanceof PasswordCallback ) { 87 ((PasswordCallback ) callbacks[i]).setPassword("secret".toCharArray()); 88 } else { 89 throw new UnsupportedCallbackException (callbacks[i]); 90 } 91 } 92 } 93 }); 94 try { 95 context.login(); 96 fail("Should have thrown a FailedLoginException"); 97 } catch (FailedLoginException doNothing) { 98 } 99 100 } 101 102 public void testBadPWLogin() throws Exception { 103 LoginContext context = new LoginContext ("PropertiesLogin", new CallbackHandler () { 104 public void handle(Callback [] callbacks) throws IOException , UnsupportedCallbackException { 105 for (int i = 0; i < callbacks.length; i++) { 106 if (callbacks[i] instanceof NameCallback ) { 107 ((NameCallback ) callbacks[i]).setName("first"); 108 } else if (callbacks[i] instanceof PasswordCallback ) { 109 ((PasswordCallback ) callbacks[i]).setPassword("BAD".toCharArray()); 110 } else { 111 throw new UnsupportedCallbackException (callbacks[i]); 112 } 113 } 114 } 115 }); 116 try { 117 context.login(); 118 fail("Should have thrown a FailedLoginException"); 119 } catch (FailedLoginException doNothing) { 120 } 121 122 } 123 } 124 | Popular Tags |