1 22 package org.jboss.test.security.test; 23 24 import java.io.IOException ; 25 import java.rmi.RemoteException ; 26 import java.util.Properties ; 27 import javax.ejb.CreateException ; 28 import javax.naming.Context ; 29 import javax.naming.InitialContext ; 30 import javax.naming.NamingException ; 31 import javax.security.auth.callback.*; 32 import javax.security.auth.login.*; 33 34 import org.jboss.test.security.interfaces.StatelessSession; 35 import org.jboss.test.security.interfaces.StatelessSessionHome; 36 import org.jboss.test.util.AppCallbackHandler; 37 38 43 public class StatelessSessionClient 44 { 45 static org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(StatelessSessionClient.class); 46 47 static void runMT() 48 { 49 Thread t0 = new Thread () 50 { 51 public void run() 52 { 53 try 54 { 55 runAs("scott", "echoman".toCharArray()); 56 } 57 catch(Exception e) 58 { 59 } 60 } 61 }; 62 Thread t1 = new Thread () 63 { 64 public void run() 65 { 66 try 67 { 68 runAs("stark", "javaman".toCharArray()); 69 } 70 catch(Exception e) 71 { 72 } 73 } 74 }; 75 t0.start(); 76 t1.start(); 77 } 78 79 static void runAs(String username, char[] password) throws Exception 80 { 81 LoginContext lc = null; 82 String confName = System.getProperty("conf.name", "other"); 83 boolean loggedIn = false; 84 try 85 { 86 AppCallbackHandler handler = new AppCallbackHandler(username, password); 87 log.debug("Creating LoginContext("+confName+")"); 88 lc = new LoginContext(confName, handler); 89 lc.login(); 90 log.debug("Created LoginContext, subject="+lc.getSubject()); 91 loggedIn = true; 92 93 95 Properties props = new Properties (); 96 props.setProperty(Context.SECURITY_PRINCIPAL, username); 97 props.setProperty(Context.SECURITY_CREDENTIALS, new String (password)); 98 props.setProperty(Context.SECURITY_PROTOCOL, "simple"); 99 InitialContext jndiContext = new InitialContext (props); 100 Object obj = jndiContext.lookup("StatelessSession2"); 101 Class [] ifaces = obj.getClass().getInterfaces(); 102 StatelessSessionHome home = (StatelessSessionHome) obj; 103 log.debug("Found StatelessSessionHome"); 104 StatelessSession bean = home.create(); 105 log.debug("Created StatelessSession"); 106 log.debug("Bean.echo('Hello') -> "+bean.echo("Hello")); 107 } 108 finally 109 { 110 if( lc != null && loggedIn ) 111 lc.logout(); 112 } 113 } 114 115 public static void main(String args[]) throws Exception 116 { 117 if( args.length == 1 && args[0].equals("-mt") ) 118 { 119 log.debug("Running multi-threaded with simultaneous logins"); 120 runMT(); 121 } 122 else 123 { 124 log.debug("Running single-threaded with sequential logins"); 125 runAs("scott", "echoman".toCharArray()); 126 runAs("stark", "javaman".toCharArray()); 127 } 128 } 129 } 130 | Popular Tags |