*** 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()){