[jboss-cvs] JBossAS SVN: r57533 - branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/security
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Oct 10 10:41:30 EDT 2006
Author: anil.saldhana at jboss.com
Date: 2006-10-10 10:41:29 -0400 (Tue, 10 Oct 2006)
New Revision: 57533
Modified:
branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/security/SecurityActions.java
Log:
EJBTHREE-735:Push the RunAsIdentity on the SecurityAssociation stack
Modified: branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/security/SecurityActions.java
===================================================================
--- branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/security/SecurityActions.java 2006-10-10 14:40:03 UTC (rev 57532)
+++ branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/security/SecurityActions.java 2006-10-10 14:41:29 UTC (rev 57533)
@@ -29,6 +29,9 @@
import javax.security.auth.Subject;
import javax.security.jacc.PolicyContext;
import javax.security.jacc.PolicyContextException;
+
+import org.jboss.security.RunAsIdentity;
+import org.jboss.security.SecurityAssociation;
/**
@@ -108,7 +111,77 @@
Subject getContextSubject()
throws PolicyContextException;
}
+
+ interface RunAsIdentityActions
+ {
+ RunAsIdentityActions PRIVILEGED = new RunAsIdentityActions()
+ {
+ private final PrivilegedAction peekAction = new PrivilegedAction()
+ {
+ public Object run()
+ {
+ return SecurityAssociation.peekRunAsIdentity();
+ }
+ };
+ private final PrivilegedAction popAction = new PrivilegedAction()
+ {
+ public Object run()
+ {
+ return SecurityAssociation.popRunAsIdentity();
+ }
+ };
+
+ public RunAsIdentity peek()
+ {
+ return (RunAsIdentity)AccessController.doPrivileged(peekAction);
+ }
+
+ public void push(final RunAsIdentity id)
+ {
+ AccessController.doPrivileged(
+ new PrivilegedAction()
+ {
+ public Object run()
+ {
+ SecurityAssociation.pushRunAsIdentity(id);
+ return null;
+ }
+ }
+ );
+ }
+
+ public RunAsIdentity pop()
+ {
+ return (RunAsIdentity)AccessController.doPrivileged(popAction);
+ }
+ };
+
+ RunAsIdentityActions NON_PRIVILEGED = new RunAsIdentityActions()
+ {
+ public RunAsIdentity peek()
+ {
+ return SecurityAssociation.peekRunAsIdentity();
+ }
+
+ public void push(RunAsIdentity id)
+ {
+ SecurityAssociation.pushRunAsIdentity(id);
+ }
+
+ public RunAsIdentity pop()
+ {
+ return SecurityAssociation.popRunAsIdentity();
+ }
+ };
+
+ RunAsIdentity peek();
+
+ void push(RunAsIdentity id);
+
+ RunAsIdentity pop();
+ }
+
static Subject getContextSubject()
throws PolicyContextException
{
@@ -128,4 +201,28 @@
String previousID = (String) AccessController.doPrivileged(action);
return previousID;
}
+
+ static void pushRunAsIdentity(RunAsIdentity principal)
+ {
+ if(System.getSecurityManager() == null)
+ {
+ RunAsIdentityActions.NON_PRIVILEGED.push(principal);
+ }
+ else
+ {
+ RunAsIdentityActions.PRIVILEGED.push(principal);
+ }
+ }
+
+ static RunAsIdentity popRunAsIdentity()
+ {
+ if(System.getSecurityManager() == null)
+ {
+ return RunAsIdentityActions.NON_PRIVILEGED.pop();
+ }
+ else
+ {
+ return RunAsIdentityActions.PRIVILEGED.pop();
+ }
+ }
}
More information about the jboss-cvs-commits
mailing list