1 16 package org.jmanage.core.auth; 17 18 import javax.security.auth.Subject ; 19 import javax.security.auth.login.LoginException ; 20 import javax.security.auth.callback.*; 21 import java.util.Map ; 22 23 28 public class LoginModule implements javax.security.auth.spi.LoginModule { 29 30 private Subject subject; 31 private CallbackHandler callbackHandler; 32 private boolean loginStatus; 33 private Map options; 34 private Map sharedState; 35 private User loggedInUser = null; 36 37 62 public void initialize(Subject subject, CallbackHandler callbackHandler, 63 Map sharedState, Map options) { 64 this.subject = subject; 65 this.callbackHandler = callbackHandler; 66 this.sharedState = sharedState; 67 this.options = options; 68 loginStatus = false; 69 } 70 71 88 public boolean login() throws LoginException { 89 90 if (callbackHandler == null) { 91 throw new LoginException ("No callback handler is available"); 92 } 93 NameCallback nameCallback = new NameCallback("username"); 94 PasswordCallback pwdCallback = new PasswordCallback("password", false); 95 Callback[] callbacks = new Callback[] {nameCallback, pwdCallback}; 96 97 String username = null; 98 char[] password = null; 99 try { 100 callbackHandler.handle(callbacks); 101 username = nameCallback.getName(); 102 password = pwdCallback.getPassword(); 103 } catch (java.io.IOException ioe) { 104 throw new LoginException (ioe.toString()); 105 } catch (UnsupportedCallbackException ce) { 106 throw new LoginException ("Error: " + ce.getCallback().toString()); 107 } 108 109 UserManager userManager = UserManager.getInstance(); 110 loggedInUser = userManager.verifyUsernamePassword(username, password); 111 loginStatus = loggedInUser != null; 112 return loginStatus; 113 } 114 115 138 public boolean commit() throws LoginException { 139 if(loginStatus){ 140 subject.getPrincipals().add(loggedInUser); 141 return true; 142 } 143 return false; 144 } 145 146 166 public boolean abort() throws LoginException { 167 return true; 168 } 169 170 183 public boolean logout() throws LoginException { 184 subject = null; 185 loginStatus = false; 186 return true; 187 } 188 } | Popular Tags |