Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   * JBoss, Home of Professional Open Source.
   * Copyright 2011, Red Hat, Inc., and individual contributors
   * as indicated by the @author tags. See the copyright.txt file 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
  * 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:
A simple LoginModule to take the UserPrincipal from the inbound Remoting connection and to use it as an already authenticated user. Subsequent login modules can be chained after this module to load role information.

Darran Lofthouse
 public class RemotingLoginModule extends AbstractServerLoginModule {
     private static final SecurityLogger log = .;
     private Principal identity;
     public boolean login() throws LoginException {
         if (super.login() == true) {
             return true;
         Object credential = getCredential();
         if (credential instanceof RemotingConnectionCredential) {
             Connection con = ((RemotingConnectionCredentialcredential).getConnection();
             UserPrincipal up = null;
             for (Principal current : con.getPrincipals()) {
                 if (current instanceof UserPrincipal) {
                     up = (UserPrincipalcurrent;
             // If we found a principal from the connection then authentication succeeded.
             if (up != null) {
                  = up;
                 if (getUseFirstPass()) {
                     String userName = .getName();
                     if (.isDebugEnabled())
                         .debug("Storing username '" + userName + "' and empty password");
                     // Add the username and an empty password to the shared state map
                  = true;
                 return true;
         // We return false to allow the next module to attempt authentication, maybe a
         // username and password has been supplied to a web auth.
         return false;
     protected Object getCredential() throws LoginException {
         NameCallback nc = new NameCallback("Alias: ");
         ObjectCallback oc = new ObjectCallback("Credential: ");
         Callback[] callbacks = { ncoc };
         try {
            return oc.getCredential();
        } catch (IOException ioe) {
            LoginException le = new LoginException();
            throw le;
        } catch (UnsupportedCallbackException uce) {
            LoginException le = new LoginException();
            throw le;
    protected Principal getIdentity() {
        return ;
    protected Group[] getRoleSets() throws LoginException {
        Group roles = new SimpleGroup("Roles");
        Group callerPrincipal = new SimpleGroup("CallerPrincipal");
        Group[] groups = { rolescallerPrincipal };
        return groups;
New to GrepCode? Check out our FAQ X