1 17 18 package org.apache.geronimo.security.bridge; 19 20 import java.io.IOException ; 21 import java.util.Map ; 22 import javax.security.auth.Subject ; 23 import javax.security.auth.callback.Callback ; 24 import javax.security.auth.callback.CallbackHandler ; 25 import javax.security.auth.callback.NameCallback ; 26 import javax.security.auth.callback.PasswordCallback ; 27 import javax.security.auth.callback.UnsupportedCallbackException ; 28 import javax.security.auth.login.LoginException ; 29 import javax.security.auth.spi.LoginModule ; 30 31 import org.apache.geronimo.security.realm.providers.GeronimoPasswordCredential; 32 33 34 37 public class TestLoginModule implements LoginModule { 38 public final static String REALM_NAME = "bridge-realm"; 39 public final static String JAAS_NAME = "bridge"; 40 41 private Subject subject; 42 private CallbackHandler callbackHandler; 43 44 private String resourcePrincipalName; 45 private String userName; 46 private char[] password; 47 48 49 public void initialize(Subject subject, CallbackHandler callbackHandler, 50 Map sharedState, Map options) { 51 this.subject = subject; 52 this.callbackHandler = callbackHandler; 53 } 54 55 public boolean login() throws LoginException { 56 Callback [] callbacks = new Callback [3]; 57 58 callbacks[0] = new NameCallback ("Resource Principal"); 59 callbacks[1] = new NameCallback ("User Name"); 60 callbacks[2] = new PasswordCallback ("Password", false); 61 try { 62 callbackHandler.handle(callbacks); 63 } catch (IOException ioe) { 64 throw (LoginException ) new LoginException ().initCause(ioe); 65 } catch (UnsupportedCallbackException uce) { 66 throw (LoginException ) new LoginException ().initCause(uce); 67 } 68 resourcePrincipalName = ((NameCallback ) callbacks[0]).getName(); 69 userName = ((NameCallback ) callbacks[1]).getName(); 70 password = ((PasswordCallback ) callbacks[2]).getPassword(); 71 return resourcePrincipalName != null && userName != null && password != null; 72 } 73 74 public boolean commit() throws LoginException { 75 subject.getPrincipals().add(new TestPrincipal(resourcePrincipalName)); 76 GeronimoPasswordCredential passwordCredential = new GeronimoPasswordCredential(userName, password); 77 subject.getPrivateCredentials().add(passwordCredential); 78 return true; 79 } 80 81 public boolean abort() throws LoginException { 82 return false; 83 } 84 85 public boolean logout() throws LoginException { 86 return false; 87 } 88 } 89 | Popular Tags |