[jboss-cvs] Picketbox SVN: r323 - in trunk: security-spi/spi/src/main/java/org/jboss/security and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Apr 23 21:48:07 EDT 2012


Author: sguilhen at redhat.com
Date: 2012-04-23 21:48:06 -0400 (Mon, 23 Apr 2012)
New Revision: 323

Modified:
   trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/callback/JASPICallbackHandler.java
   trunk/security-spi/spi/src/main/java/org/jboss/security/SubjectInfo.java
Log:
Fix JASPICallbackHandler to add authenticated principal to Subject. Synchronize access to the identities set in SubjectInfo

Modified: trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/callback/JASPICallbackHandler.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/callback/JASPICallbackHandler.java	2012-04-10 01:10:21 UTC (rev 322)
+++ trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/callback/JASPICallbackHandler.java	2012-04-24 01:48:06 UTC (rev 323)
@@ -92,7 +92,7 @@
          } 
          
          Subject subject = groupPrincipalCallback.getSubject();
-         
+
          if( subject != null )
          {
             currentSC.getSubjectInfo().setAuthenticatedSubject( subject );
@@ -114,11 +114,16 @@
          } 
          
          Principal callerPrincipal = callerPrincipalCallback.getPrincipal();
+         if (callerPrincipal == null && callerPrincipalCallback.getName() != null)
+            callerPrincipal = new SimplePrincipal(callerPrincipalCallback.getName());
+         
          if( callerPrincipal != null )
          {
+            if (subject != null)
+               subject.getPrincipals().add(callerPrincipal);
             Identity principalBasedIdentity = IdentityFactory.getIdentity( callerPrincipal, null );
             currentSC.getSubjectInfo().addIdentity( principalBasedIdentity ); 
-         } 
+         }
       }
       else if( callback instanceof PasswordValidationCallback )
       {

Modified: trunk/security-spi/spi/src/main/java/org/jboss/security/SubjectInfo.java
===================================================================
--- trunk/security-spi/spi/src/main/java/org/jboss/security/SubjectInfo.java	2012-04-10 01:10:21 UTC (rev 322)
+++ trunk/security-spi/spi/src/main/java/org/jboss/security/SubjectInfo.java	2012-04-24 01:48:06 UTC (rev 323)
@@ -23,6 +23,7 @@
 
 import java.io.Serializable;
 import java.security.Principal;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -30,7 +31,7 @@
 
 import org.jboss.security.identity.Identity;
 import org.jboss.security.identity.IdentityFactory;
-import org.jboss.security.identity.RoleGroup; 
+import org.jboss.security.identity.RoleGroup;
 import org.jboss.security.identity.extensions.CredentialIdentityFactory;
 
 
@@ -88,7 +89,7 @@
       this.roles = roles;
    } 
    
-   public void addIdentity(Identity id)
+   public synchronized void addIdentity(Identity id)
    {
       if(identities == null)
          identities = new HashSet<Identity>();
@@ -103,7 +104,7 @@
    }
    
    @SuppressWarnings("unchecked")
-   public <T> T getIdentity(Class<T> clazz)
+   public synchronized <T> T getIdentity(Class<T> clazz)
    {
       if( clazz == null )
          throw new IllegalArgumentException( ErrorCodes.NULL_ARGUMENT + "clazz is null" );
@@ -125,10 +126,10 @@
    
    public Set<Identity> getIdentities()
    {
-      return this.identities;
+      return Collections.unmodifiableSet(identities);
    }
    
-   public void setIdentities(Set<Identity> ids)
+   public synchronized void setIdentities(Set<Identity> ids)
    {
       if(identities == null)
          identities = new HashSet<Identity>();
@@ -139,13 +140,13 @@
     * Remove an identity
     * @param id
     */
-   public void removeIdentity( Identity id )
+   public synchronized void removeIdentity( Identity id )
    {
       identities.remove( id );
    }
 
    @Override
-   public String toString()
+   public synchronized String toString()
    {
       StringBuilder builder = new StringBuilder(); 
       builder.append("Identities=" + this.identities);



More information about the jboss-cvs-commits mailing list