[jboss-cvs] JBossAS SVN: r61961 - projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/jacc.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sun Apr 1 00:45:21 EDT 2007


Author: anil.saldhana at jboss.com
Date: 2007-04-01 00:45:21 -0400 (Sun, 01 Apr 2007)
New Revision: 61961

Modified:
   projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/jacc/SubjectPolicyContextHandler.java
Log:
update to security context work

Modified: projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/jacc/SubjectPolicyContextHandler.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/jacc/SubjectPolicyContextHandler.java	2007-04-01 04:44:48 UTC (rev 61960)
+++ projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/jacc/SubjectPolicyContextHandler.java	2007-04-01 04:45:21 UTC (rev 61961)
@@ -31,7 +31,12 @@
 
 import org.jboss.security.RunAsIdentity;
 import org.jboss.security.SecurityAssociation;
+import org.jboss.security.SecurityContext;
+import org.jboss.security.SubjectInfo;
+import org.jboss.security.plugins.SecurityContextAssociation;
 
+import static org.jboss.security.SecurityConstants.*;
+
 /** A PolicyContextHandler for the current authenticated Subject.
  * @author Scott.Stark at jboss.org
  * @version $Revison:$
@@ -44,7 +49,7 @@
    private static class GetSubjectAction implements PrivilegedAction
    {
       static PrivilegedAction ACTION = new GetSubjectAction();
-      public Object run()
+      /*public Object run()
       {
          Subject theSubject = null;
          Subject activeSubject = SecurityAssociation.getSubject();
@@ -77,7 +82,49 @@
             }
          }
          return theSubject;
-      }
+      }*/
+      
+      public Object run()
+      {
+         Subject theSubject = null;
+         SecurityContext sc = SecurityContextAssociation.getSecurityContext();
+         if(sc != null)
+         {
+            SubjectInfo si = sc.getSubjectInfo(); 
+            
+            if(si != null)
+            {
+               Subject activeSubject = si.getAuthenticatedSubject();
+               RunAsIdentity callerRunAsIdentity = (RunAsIdentity)sc.getUtil().get(sc, CALLER_RAI_IDENTIFIER);
+               
+               if( activeSubject != null )
+               {
+                  Set principalsSet = null;
+                  if( callerRunAsIdentity == null )
+                  {
+                     principalsSet = activeSubject.getPrincipals();
+                  }
+                  else
+                  {
+                     principalsSet = callerRunAsIdentity.getPrincipalsSet();
+                  }
+
+                  theSubject = new Subject(true, principalsSet,
+                     activeSubject.getPublicCredentials(),
+                     activeSubject.getPrivateCredentials());
+               }
+               else
+               { 
+                  if( callerRunAsIdentity != null )
+                  {
+                     Set principalsSet = callerRunAsIdentity.getPrincipalsSet();
+                     theSubject = new Subject(true, principalsSet, EMPTY_SET, EMPTY_SET);
+                  }
+               }
+            } 
+         } 
+         return theSubject;
+      } 
    }
 
    public Object getContext(String key, Object data)




More information about the jboss-cvs-commits mailing list