1 17 package org.apache.geronimo.security.jaas.client; 18 19 import java.util.Map ; 20 import javax.security.auth.Subject ; 21 import javax.security.auth.callback.Callback ; 22 import javax.security.auth.callback.CallbackHandler ; 23 import javax.security.auth.login.LoginException ; 24 import javax.security.auth.login.FailedLoginException ; 25 26 import org.apache.geronimo.security.jaas.server.JaasSessionId; 27 import org.apache.geronimo.security.jaas.server.JaasLoginServiceMBean; 28 import org.apache.geronimo.security.jaas.LoginModuleControlFlag; 29 30 31 34 public class ServerLoginProxy extends LoginModuleProxy { 35 CallbackHandler handler; 36 Callback [] callbacks; 37 private final int lmIndex; 38 private final JaasLoginServiceMBean service; 39 private final JaasSessionId sessionHandle; 40 41 public ServerLoginProxy(LoginModuleControlFlag controlFlag, Subject subject, int lmIndex, 42 JaasLoginServiceMBean service, JaasSessionId sessionHandle) 43 { 44 super(controlFlag, subject); 45 this.lmIndex = lmIndex; 46 this.service = service; 47 this.sessionHandle = sessionHandle; 48 } 49 50 public void initialize(Subject subject, CallbackHandler handler, Map sharedState, Map options) { 51 this.handler = handler; 52 } 53 54 66 public boolean login() throws LoginException { 67 try { 68 callbacks = service.getServerLoginCallbacks(sessionHandle, lmIndex); 69 if (handler != null) { 70 handler.handle(callbacks); 71 } else if (callbacks != null && callbacks.length > 0) { 72 System.err.println("No callback handler available for " + callbacks.length + " callbacks!"); 73 } 74 return service.performLogin(sessionHandle, lmIndex, callbacks); 75 } catch (FailedLoginException e) { 76 throw e; 77 } catch (Exception e) { 78 LoginException le = new LoginException ("Error filling callback list"); 79 le.initCause(e); 80 throw le; 81 } 82 } 83 84 public boolean commit() throws LoginException { 85 return service.performCommit(sessionHandle, lmIndex); 86 } 87 88 public boolean abort() throws LoginException { 89 return service.performAbort(sessionHandle, lmIndex); 90 } 91 92 public boolean logout() throws LoginException { 93 return false; } 95 } | Popular Tags |