User: jules_gosnell
  Date: 01/06/10 14:37:45

  Added:       jetty/src/main/org/jboss/jetty JBossUserRealm.java
  Log:
  Scott's new JAAS integration - first cut - thanks Scott!
  
  Revision  Changes    Path
  1.1                  contrib/jetty/src/main/org/jboss/jetty/JBossUserRealm.java
  
  Index: JBossUserRealm.java
  ===================================================================
  package org.jboss.jetty;
  
  import java.util.HashSet;
  import javax.naming.InitialContext;
  import javax.naming.NamingException;
  
  import com.mortbay.HTTP.HttpRequest;
  import com.mortbay.HTTP.UserPrincipal;
  import com.mortbay.HTTP.UserRealm;
  
  import org.jboss.security.EJBSecurityManager;
  import org.jboss.security.RealmMapping;
  import org.jboss.security.SimplePrincipal;
  import org.jboss.security.SecurityAssociation;
  import org.jboss.security.SubjectSecurityManager;
  
  /** An implementation of UserRealm that integrates with the JBossSX security
  manager associted with the web application.
  
   * @author  [EMAIL PROTECTED]
   * @version $Revision: 1.1 $
   */
  public class JBossUserRealm implements UserRealm
  {
      private String realmName;
  
      class User extends SimplePrincipal implements UserPrincipal
      {
          HttpRequest request;
          User(String name, HttpRequest request)
          {
              super(name);
              this.request = request;
          }
  
          public boolean authenticate(String password)
          {
              boolean authenticated = false;
              String username = this.getName();
              System.out.println("Authenticating access, username: " + username + " " 
+request);
              try
              {
                  // Get the JBoss security manager from the ENC context
                  InitialContext iniCtx = new InitialContext();
                  EJBSecurityManager securityMgr = (EJBSecurityManager) 
iniCtx.lookup("java:comp/env/security/securityMgr");
                   if( securityMgr.isValid(this, password) )
                  {
                      authenticated = true;
                      request.setAttribute(UserPrincipal.__ATTR, this);
                      System.out.println("User: "+username+" is authenticated");
                      SecurityAssociation.setPrincipal(this);
                      SecurityAssociation.setCredential(password.toCharArray());
                      /*
                      if( useJAAS == true && securityMgr instanceof 
SubjectSecurityManager )
                      {
                          SubjectSecurityManager subjectMgr = (SubjectSecurityManager) 
securityMgr;
                          Subject subject = subjectMgr.getActiveSubject();
                          request.setAttribute(subjectAttributeName, subject);
                      }
                      */
                  }
                  else
                  {
                      System.out.println("User: "+username+" is NOT authenticated");
                  }
              }
              catch(NamingException e)
              {
                  System.err.println("Error during authenticate");
                  e.printStackTrace();
              }
  
              return authenticated;
          }
          public boolean isUserInRole(String role)
          {
              boolean isUserInRole = false;
              String username = this.getName();
              System.out.println("Authorizing access, username: " + username + " " 
+request);
              try
              {
                  // Get the JBoss security manager from the ENC context
                  InitialContext iniCtx = new InitialContext();
                  RealmMapping securityMgr = (RealmMapping) 
iniCtx.lookup("java:comp/env/security/realmMapping");
                  HashSet requiredRoles = new HashSet();
                  requiredRoles.add(role);
                  if( securityMgr.doesUserHaveRole(this, requiredRoles) )
                  {
                      isUserInRole = true;
                      System.out.println("User: "+username+" is authorized");
                  }
                  else
                  {
                      System.out.println("User: "+username+" is NOT authorized, 
requiredRoles="+requiredRoles);
                  }
              }
              catch(NamingException e)
              {
                  System.err.println("Error during authorization");
                  e.printStackTrace();
              }
              return isUserInRole;
          }
          public UserRealm getUserRealm()
          {
              return JBossUserRealm.this;
          }
      }
  
      /** Creates new JBossUserRealm */
      public JBossUserRealm(String realmName)
      {
          this.realmName = realmName;
          System.out.println("+++ Created JBossUserRealm, realmName="+realmName);
      }
  
      public String getName()
      {
          return realmName;
      }
  
      public UserPrincipal getUser(String username, HttpRequest request)
      {
          System.out.println("+++ JBossUserRealm.getUser, username="+username);
          return new User(username, request);
      }
  
  }
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to