*** LoginContextDriver.java.orig	2008-09-17 21:58:13.000000000 +1000
--- LoginContextDriver.java	2008-09-18 11:03:46.000000000 +1000
***************
*** 453,458 ****
--- 453,489 ----
              Object obj = getPublicCredentials(s, GSSUPName.class);
  
              user = ((GSSUPName)obj).getUser();
+ 
+             ///////////////////////////////////////////////
+             if(user != null) {
+               if(_logger.isLoggable(Level.FINE)){
+                 _logger.fine("Adding groups");
+               }
+               final String theUser = user;
+               final Subject theSubject = s;
+               Subject.doAsPrivileged(s, new PrivilegedAction() {
+                   public java.lang.Object run() {
+                     try {
+                       Realm r = Realm.getDefaultInstance();
+                       java.util.Enumeration groupNames = r.getGroupNames(theUser);
+                       while(groupNames.hasMoreElements()) {
+                         String groupName = (String)groupNames.nextElement();
+                         if(_logger.isLoggable(Level.FINE)){
+                           _logger.fine("Adding group " + groupName);
+                         }
+                         com.sun.enterprise.deployment.Group group = new com.sun.enterprise.deployment.Group(groupName);
+                         theSubject.getPrincipals().add(group);
+                       }
+                       return Boolean.valueOf(true);
+                     } catch(Exception e) {
+                       return Boolean.valueOf(false);
+                     }
+                   }
+                 }
+                 , AccessController.getContext());
+             }
+             ///////////////////////////////////////////////
+ 
      
              setSecurityContext(user, s, realm);
              if(AUDIT_MANAGER.isAuditOn()){