Velocity Tools gives access exception with $request reference under Tomcat 
security manager
-------------------------------------------------------------------------------------------

                 Key: VELTOOLS-66
                 URL: http://issues.apache.org/jira/browse/VELTOOLS-66
             Project: VelocityTools
          Issue Type: Bug
          Components: VelocityView
    Affects Versions: 1.2
            Reporter: Will Glass-Husain


I'm labeling this as a bug, though it's arguable whether the fault is of Tomcat 
or Velocity.  Regardless, we should apply a workaround.  I've replicated this 
issue with Velocity 1.4 / Tools 1.2 / JDK 1.5 / Tomcat 5.5

The problem.  When the Tomcat is run under the default security manager 
settings, it prohibits reflection on org.catalina classes.  This means that the 
reference $request.session.id fails with an access violation

INFO:  Velocity  [error] PROGRAMMER ERROR : PropertyExector() : 
java.security.AccessControlException: access denied 
(java.lang.RuntimePermission accessClassInPackage.org.apache.catalina.connector)

sometimes the package given is org.apache.catalina.core, somtimes 
org.apache.catalina.session, depending on various factors.

Users can alter their security policy to allow this access.  But this is an 
obscure procedure and may not be feasible if you do not control your hosting 
environment.  For the record, the settings for catalina.policy are (change the 
path to suit your webapp)

grant codeBase 
"file:${catalina.home}/webapps/simple/WEB-INF/lib/velocity-1.4.jar"
{
       permission java.lang.RuntimePermission
"accessClassInPackage.org.apache.catalina.connector";
      permission java.lang.RuntimePermission
"accessClassInPackage.org.apache.catalina.session";
      permission java.lang.RuntimePermission
"accessClassInPackage.org.apache.catalina.core";
};


grant codeBase 
"file:${catalina.home}/webapps/simple/WEB-INF/lib/velocity-tools-view-1.2.jar"
{
       permission java.lang.RuntimePermission
"accessClassInPackage.org.apache.catalina.connector";
       permission java.lang.RuntimePermission
"accessClassInPackage.org.apache.catalina.session";
      permission java.lang.RuntimePermission
"accessClassInPackage.org.apache.catalina.core";
};


As an alternative, I propose that the Velocity Tools project solve this by 
create a wrapper object for HttpServletRequest.  (presumably the problem also 
exists for $response, though I haven't tried it).  This object would simply 
pass through all calls to the server-provided HttpServletRequest. Obviously, 
there would need to be a parallel wrapper for HttpSession, HttpServletContext, 
and similar objects available from HttpServletRequest methods.  The result 
would be that the Velocity page would never apply reflection to a Catalina 
class.  (and hence never generate this security error).

This issue is in reference to a problem encountered and described on the user 
list by Robin Mannering.
http://www.mail-archive.com/[email protected]/msg17060.html


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to