[jboss-cvs] JBossAS SVN: r112600 - in branches/JBPAPP_5_1_2_GA_JBPAPP-7896/server/src/main/org/jboss/ejb/plugins: security and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jan 31 16:03:56 EST 2012
Author: dehort
Date: 2012-01-31 16:03:56 -0500 (Tue, 31 Jan 2012)
New Revision: 112600
Modified:
branches/JBPAPP_5_1_2_GA_JBPAPP-7896/server/src/main/org/jboss/ejb/plugins/SecurityInterceptor.java
branches/JBPAPP_5_1_2_GA_JBPAPP-7896/server/src/main/org/jboss/ejb/plugins/security/PreSecurityInterceptor.java
Log:
Fixing a bug where the SecurityInterceptor can remove the run-as identity
[JBPAPP-7896]
Modified: branches/JBPAPP_5_1_2_GA_JBPAPP-7896/server/src/main/org/jboss/ejb/plugins/SecurityInterceptor.java
===================================================================
--- branches/JBPAPP_5_1_2_GA_JBPAPP-7896/server/src/main/org/jboss/ejb/plugins/SecurityInterceptor.java 2012-01-31 20:44:19 UTC (rev 112599)
+++ branches/JBPAPP_5_1_2_GA_JBPAPP-7896/server/src/main/org/jboss/ejb/plugins/SecurityInterceptor.java 2012-01-31 21:03:56 UTC (rev 112600)
@@ -222,12 +222,26 @@
{
if (this.shouldBypassSecurity(mi))
{
+ RunAs previous_runas = SecurityActions.peekRunAsIdentity();
+ System.out.println("*** previous_runas = " + previous_runas);
+
if (log.isTraceEnabled())
log.trace("Bypass security for invoke or invokeHome");
- if (isInvoke)
- return getNext().invoke(mi);
- else
- return getNext().invokeHome(mi);
+ try
+ {
+ if (isInvoke)
+ return getNext().invoke(mi);
+ else
+ return getNext().invokeHome(mi);
+ }
+ finally
+ {
+ if( previous_runas != null) {
+ System.out.println("*** previous_runas = " + previous_runas);
+ SecurityActions.pushRunAsIdentity(previous_runas);
+ }
+ }
+
}
SecurityContext sc = SecurityActions.getSecurityContext();
@@ -378,10 +392,15 @@
boolean containerMethod = m == null || m.equals(ejbTimeout);
if (containerMethod == true || securityManager == null || container == null)
{
+ RunAs previous_runas = SecurityActions.peekRunAsIdentity();
+ System.out.println("*** previous_runas = " + previous_runas);
+
// Allow for the propagation of caller info to other beans
SecurityActions.createAndSetSecurityContext(mi.getPrincipal(), mi.getCredential(), "BYPASSED-SECURITY");
if (this.runAsIdentity != null)
SecurityActions.pushRunAsIdentity(runAsIdentity);
+ else if( previous_runas != null )
+ SecurityActions.pushRunAsIdentity(previous_runas);
return true;
}
return false;
@@ -392,4 +411,4 @@
RunAs incomingRunAs = sc.getIncomingRunAs();
return incomingRunAs != null && incomingRunAs instanceof RunAsIdentity;
}
-}
\ No newline at end of file
+}
Modified: branches/JBPAPP_5_1_2_GA_JBPAPP-7896/server/src/main/org/jboss/ejb/plugins/security/PreSecurityInterceptor.java
===================================================================
--- branches/JBPAPP_5_1_2_GA_JBPAPP-7896/server/src/main/org/jboss/ejb/plugins/security/PreSecurityInterceptor.java 2012-01-31 20:44:19 UTC (rev 112599)
+++ branches/JBPAPP_5_1_2_GA_JBPAPP-7896/server/src/main/org/jboss/ejb/plugins/security/PreSecurityInterceptor.java 2012-01-31 21:03:56 UTC (rev 112600)
@@ -96,10 +96,26 @@
//No Security in the absence of SecurityDomain
if(securityDomain == null)
{
+ SecurityContext previous_sc = SecurityActions.getSecurityContext();
+ System.out.println("*** previous_sc = " + previous_sc);
+ System.out.println("*** previous_sc.getOutgointRunAs() = " + previous_sc.getOutgoingRunAs());
+ try
+ {
if(isInvoke)
return getNext().invoke(mi);
else
return getNext().invokeHome(mi);
+ }
+ finally
+ {
+ SecurityContext current_sc = SecurityActions.getSecurityContext();
+ System.out.println("*** current_sc = " + current_sc);
+ System.out.println("*** current_sc.getOutgointRunAs() = " + current_sc.getOutgoingRunAs());
+
+// System.out.println("*** resetting security context");
+// SecurityActions.setSecurityContext(previous_sc);
+ }
+
}
if (log.isTraceEnabled())
More information about the jboss-cvs-commits
mailing list