taylor 2004/11/10 23:51:52
Modified: portal/src/java/org/apache/jetspeed/security/impl
SecurityValveImpl.java
Log:
execute the remainder of the pipeline as a privileged action in the context
of the authenticated subject
Revision Changes Path
1.8 +25 -6
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/security/impl/SecurityValveImpl.java
Index: SecurityValveImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/security/impl/SecurityValveImpl.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- SecurityValveImpl.java 24 Sep 2004 22:23:02 -0000 1.7
+++ SecurityValveImpl.java 11 Nov 2004 07:51:52 -0000 1.8
@@ -16,6 +16,7 @@
package org.apache.jetspeed.security.impl;
import java.security.Principal;
+import java.security.PrivilegedAction;
import java.util.HashSet;
import java.util.Set;
@@ -56,10 +57,11 @@
*/
public void invoke(RequestContext request, ValveContext context) throws
PipelineException
{
+ Subject subject = null;
try
- {
+ {
Principal principal = request.getRequest().getUserPrincipal();
- Subject subject = (Subject)
+ subject = (Subject)
request.getRequest().getSession().getAttribute(PortalReservedParameters.SESSION_KEY_SUBJECT);
if (null == principal)
{
@@ -86,15 +88,32 @@
}
}
request.setSubject(subject);
+
+ final ValveContext vc = context;
+ final RequestContext rc = request;
+
+ // Pass control to the next Valve in the Pipeline and execute
under the current subject
+ Subject.doAs(subject, new PrivilegedAction()
+ {
+ public Object run()
+ {
+ try
+ {
+ vc.invokeNext(rc);
+ }
+ catch (PipelineException e)
+ {
+ }
+ return null;
+ }
+ });
+
}
catch (Throwable t)
{
// TODO: valve exception handling formalized
t.printStackTrace();
}
-
- // Pass control to the next Valve in the Pipeline
- context.invokeNext(request);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]