Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2005, JBoss Inc., and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.jbpm.identity.security;
 
 import java.util.*;
jaas login module that, in case of successfull verification, adds the org.jbpm.identity.User as a principal to the subject. In case of successfull verification, the Username and Password will be associated as public and private credentials respectively.
 
 public class IdentityLoginModule implements LoginModule {
   
   Subject subject = null;
   Map sharedState = null;
   Map options = null;
  
  

Inject:
 
   
   Object validatedUserId = null;
   String validatedPwd = null;
 
   public void initialize(Subject subjectCallbackHandler callbackHandlerMap sharedStateMap options) {
     this. = subject;
     this. = callbackHandler;
     this. = sharedState;
     this. = options;
   }
 
   public boolean login() throws LoginException {
 
     // get userName and password
     NameCallback nameCallback = new NameCallback(null);
     PasswordCallback passwordCallback = new PasswordCallback(null,false);
     try {
       .handle(new Callback[]{nameCallbackpasswordCallback});
     } catch (IOException e) {
       LoginException loginException = new LoginException("callback failed");
       loginException.initCause(e);
       throw loginException;
     }
     catch (UnsupportedCallbackException e) {
       // should not happen
       throw new AssertionError(e);
     }
     String userName = nameCallback.getName();
     String pwd = new String(passwordCallback.getPassword());
     
     // validate the userName and password with the injected identity session
     Object userId = .verify(userNamepwd);
 
     boolean success = (userId!=null);
     // if userName matched the given password
     if (success) {
       // save the user id and the password in the 
       // private state of this loginmodule
        = userId;
        = pwd
     } else {
        = null;
        = null;
     }
 
     return success;
   }
 
   public boolean commit() throws LoginException {
     
    if (user==null) {
      throw new LoginException("no user for validated user id '"+);
    }
    
    // update the subject
    .getPrincipals().add(user);
    
    // and update the authenticated user
    AuthenticatedUser.setAuthenticatedUser(user);
    return true;
  }
  public boolean abort() throws LoginException {
    return logout();
  }
  public boolean logout() throws LoginException {
    if(!= null){
      // TODO can we clear all or should this login module only clear the user it
      // has added to the set of principals in the commit ?
      .getPrincipals().clear();
    }
    // and update the authenticated user
    AuthenticatedUser.setAuthenticatedUser(null);
    
     = null;
     = null;
     = null;
     = null;
     = null;
    return true;
  }
New to GrepCode? Check out our FAQ X