Gert,

Something to support our discussion: have a look at "(2) invoke filter chain on 
forwards" on  http://www.jroller.com/page/fairTrade. If I use a redirect, the 
filter gets invoked properly.

Erik

-----Oorspronkelijk bericht-----
Van: Gert Vanthienen [mailto:[EMAIL PROTECTED]
Verzonden: woensdag 20 september 2006 15:25
Aan: MyFaces Discussion
Onderwerp: Re: MyFaces, Tomcat and Acegi Integration Problem


Erik,

The WebXmlParser doesn't recognize the <dispatcher> element, but this is 
not the component that is responsible for making sure the requests pass 
the Acegi Security check.  The web container (Tomcat) is responsible for 
performing this task.  I don't think the warning message your seeing can 
cause the filter to be bypassed.

That's the reason for my suggestion for trying to get the Acegi filter 
to work in a simple application and making sure it works there, with 
only Tomcat to blame if things go wrong.  If you want, I can give it a 
try myself this evening or tomorrow morning.  I've been postponing to 
take a decent look at the Acegi Security filter for too long anyway ;)

Regards,

Gert Vanthienen
[EMAIL PROTECTED]

GOVAERS Erik wrote:
> Gert,
>
> Thanks for your reply. I added the <dispatcher> elements as described in 
> http://wiki.apache.org/myfaces/JSF_and_Acegi to make sure that <jsp:forward> 
> requests are captured by the Acegi Filter. Because they are not recognized by 
> the WebXmlParser, forward requests can bypass the Acegi Security check.
> No, I haven't tried it in a simple sample application.
>
> Erik
>
> -----Oorspronkelijk bericht-----
> Van: Gert Vanthienen [mailto:[EMAIL PROTECTED]
> Verzonden: woensdag 20 september 2006 14:39
> Aan: MyFaces Discussion
> Onderwerp: Re: MyFaces, Tomcat and Acegi Integration Problem
>
>
> Erik,
>
>
> I have taken a quick look at the source code of WebXmlParser.  It 
> currently doesn't have any awareness of the <web-app 
> version="2.4".../>-style web.xml, causing it to ignore the 'dispatcher' 
> element (which did not exist prior to version 2.4 of the servlet spec), 
> hence the warning.  However, this is a merely a warning and it doesn't 
> change the behavior of MyFaces, as far as I can see.  I'm almost certain 
> it doesn't modify the way Tomcat handles this filter-mapping.
>
> Have you tried using this filter configuration in a simple (only for 
> testing purposes) web application with no JSF, only plain JSPs and 
> Servlets?  Does it work correctly in these simplified circumstances?
>
>
> Regards,
>
> Gert Vanthienen
> [EMAIL PROTECTED]
>
> GOVAERS Erik wrote:
>   
>> Hello, 
>>
>> I'm using MyFaces with the Spring Framework and Acegi for building a secured 
>> web application. Here's my configuration: 
>>      Tomcat 5.0.28 
>>      MyFaces 1.1.3 
>>
>>      Tomahawk 1.1.3 
>>      Servlets 2.4 (correct header in web.xml, see attachment) 
>> To make sure that a jsp forward request is intercepted by Acegi, I added the 
>> <dispatcher> elements to the Acegi filter mapping entry in my web.xml as 
>> described in <http://wiki.apache.org/myfaces/JSF_and_Acegi>.
>> When I start Tomcat, I get the following warning: "Ignored element 
>> 'dispatcher' as child of 'filter-mapping'.", generated by the FilterMapping 
>> method in org.apache.myfaces.shared_impl.webapp.webxml.WebXmlParser. I also 
>> noticed that jsp forward actions aren't caught by Acegi. Has anybody any 
>> idea what I am doing wrong here? The WebXmlParser is part of the 
>> tomahawk-1.1.3.jar.
>>
>> Kind regards, 
>> Erik Govaers
>>
>>
>>
>>
>>
>> Erik Govaers
>> Medewerker Gehandicaptenzorg
>> Dienst Welzijn Provincie Antwerpen
>> Boomgaardstraat  22
>> 2600 Berchem
>> Tel.: 03/240 56 72
>> Fax: 03/240 61 62
>>
>>   
>> ------------------------------------------------------------------------
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>>
>> <web-app 
>>      id="WebApp_ID"
>>      version="2.4"
>>      xmlns="http://java.sun.com/xml/ns/j2ee";
>>      xmlns:xsi="http://java.sun.com/xml/ns/j2ee 
>> http://www.w3.org/2001/XMLSchema-instance";
>>      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
>> http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";>
>>
>>      <!-- This web.xml can be used during debugging, when there is no 
>> myfaces.jar
>>              library available.
>>              
>>              The faces-config.xml file (that is normally in the myfaces.jar) 
>> must be
>>              copied to the /WEB-INF directory of the web context.
>>              
>>              The TLDs (that are normally in the myfaces.jar) must be
>>              copied to the /WEB-INF/lib directory of the web context.-->
>>      <description>debug web.xml</description>
>>
>>      <context-param>
>>              <param-name>javax.faces.CONFIG_FILES</param-name>
>>              <param-value>/WEB-INF/faces-navigation.xml</param-value>
>>      </context-param>
>>
>>      <context-param>
>>              <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
>>              <param-value>server</param-value>
>>              <description>
>>                      State saving method: "client" or "server" (= default) 
>> See
>>                      JSF Specification 2.5.2
>>              </description>
>>      </context-param>
>>
>>      <context-param>
>>              <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
>>              <param-value>true</param-value>
>>              <description>
>>                      This parameter tells MyFaces if javascript code should 
>> be
>>                      allowed in the rendered HTML output. If javascript is
>>                      allowed, command_link anchors will have javascript code 
>> that
>>                      submits the corresponding form. If javascript is not
>>                      allowed, the state saving info and nested parameters 
>> will be
>>                      added as url parameters. Default: "true"
>>              </description>
>>      </context-param>
>>
>>      <context-param>
>>              <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
>>              <param-value>false</param-value>
>>      </context-param>
>>
>>      <context-param>
>>              <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
>>              <param-value>true</param-value>
>>              <description>
>>                      If true, rendered HTML code will be formatted, so that 
>> it is
>>                      "human readable". i.e. additional line separators and
>>                      whitespace will be written, that do not influence the 
>> HTML
>>                      code. Default: "true"
>>              </description>
>>      </context-param>
>>
>>      <context-param>
>>              <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
>>              <param-value>true</param-value>
>>              <description>
>>                      If true, a javascript function will be rendered that is 
>> able
>>                      to restore the former vertical scroll on every request.
>>                      Convenient feature if you have pages with long lists 
>> and you
>>                      do not want the browser page to always jump to the top 
>> if
>>                      you trigger a link or button action that stays on the 
>> same
>>                      page. Default: "false"
>>              </description>
>>      </context-param>
>>      
>>      <context-param> 
>>              
>> <param-name>org.apache.myfaces.CHECK_EXTENSIONS_FILTER</param-name> 
>>              <param-value>false</param-value> 
>>      </context-param>
>>      
>>      <context-param>
>>              <param-name>org.apache.myfaces.ADD_RESOURCE_CLASS</param-name>
>>              
>> <param-value>org.apache.myfaces.component.html.util.StreamingAddResource</param-value>
>>      </context-param>
>>      
>>      <context-param>
>>              
>> <param-name>org.apache.myfaces.COMPRESS_STATE_IN_SESSION</param-name>
>>              <param-value>false</param-value>
>>      </context-param>
>>      
>>      <context-param>
>>              
>> <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
>>              <param-value>false</param-value>
>>      </context-param>
>>
>>      <!-- Tiles ViewHandler config file -->
>>
>>      <context-param>
>>              <param-name>tiles-definitions</param-name>
>>              <param-value>/WEB-INF/tiles.xml</param-value>
>>              <description>
>>                      Tiles configuration definition files and a listener 
>> need to
>>                      be defined. the listener will initialize
>>                      JspTilesViewHandlerImpl with tiles definitions.
>>              </description>
>>      </context-param>
>>
>>      <!--
>>              - Location of the XML file that defines the root application 
>> context.
>>              - Applied by ContextLoaderServlet.
>>              -
>>              - Can include "/WEB-INF/dataAccessContext-local.xml" for a 
>> single-database
>>              - context
>>      -->
>>      <context-param>
>>              <param-name>contextConfigLocation</param-name>
>>              <param-value>
>>                      
>> /WEB-INF/dataAccessContext-local.xml,/WEB-INF/applicationContext.xml,/WEB-INF/securityContext.xml
>>              </param-value>
>>      </context-param>
>>
>>      <!-- - - - - - - - ACEGI FILTERS - - - - - - - - -->
>>
>>      <filter>
>>              <filter-name>Acegi Filter Chain Proxy</filter-name>
>>              <filter-class>
>>                      org.acegisecurity.util.FilterToBeanProxy
>>              </filter-class>
>>              <init-param>
>>                      <param-name>targetClass</param-name>
>>                      <param-value>
>>                              org.acegisecurity.util.FilterChainProxy
>>                      </param-value>
>>              </init-param>
>>      </filter>
>>
>>      <!-- - - - - - - - END ACEGI FILTERS - - - - - - - - -->
>>
>>      <!-- EXTENSIONS FILTER -->
>>
>>      <filter>
>>              <filter-name>extensionsFilter</filter-name>
>>              <filter-class>
>>                      org.apache.myfaces.webapp.filter.ExtensionsFilter
>>              </filter-class>
>>              <init-param>
>>                      <param-name>uploadMaxFileSize</param-name>
>>                      <param-value>100m</param-value>
>>                      <description>
>>                              Set the size limit for uploaded files. Format: 
>> 10 - 10
>>                              bytes 10k - 10 KB 10m - 10 MB 1g - 1 GB
>>                      </description>
>>              </init-param>
>>              <init-param>
>>                      <param-name>uploadThresholdSize</param-name>
>>                      <param-value>100k</param-value>
>>                      <description>
>>                              Set the threshold size - files below this limit 
>> are
>>                              stored in memory, files above this limit are 
>> stored on
>>                              disk.
>>
>>                              Format: 10 - 10 bytes 10k - 10 KB 10m - 10 MB 
>> 1g - 1 GB
>>                      </description>
>>              </init-param>
>>              <!--        <init-param>
>>                      <param-name>uploadRepositoryPath</param-name>
>>                      <param-value>/temp</param-value>
>>                      <description>Set the path where the intermediary files 
>> will be stored.
>>                      </description>
>>                      </init-param>-->
>>      </filter>
>>
>>      <filter-mapping>
>>              <filter-name>Acegi Filter Chain Proxy</filter-name>
>>              <url-pattern>/*</url-pattern>
>>              <dispatcher>FORWARD</dispatcher>
>>              <dispatcher>REQUEST</dispatcher>
>>      </filter-mapping>
>>
>>      <filter-mapping>
>>              <filter-name>extensionsFilter</filter-name>
>>              <url-pattern>*.jsf</url-pattern>
>>      </filter-mapping>
>>      
>>      <filter-mapping>
>>              <filter-name>extensionsFilter</filter-name>
>>              <url-pattern>/faces/*</url-pattern>
>>      </filter-mapping>
>>      
>>      <!-- extension mapping for adding <script/>, <link/>, and other 
>> resource tags to JSF-pages  -->
>>      <filter-mapping>
>>              <filter-name>extensionsFilter</filter-name>
>>              <!-- servlet-name must match the name of your 
>> javax.faces.webapp.FacesServlet entry -->
>>              <servlet-name>Faces Servlet</servlet-name>
>>      </filter-mapping>
>>
>>      <!--
>>              - Loads the root application context of this web app at startup,
>>              - by default from "/WEB-INF/applicationContext.xml".
>>              - Note that you need to fall back to Spring's 
>> ContextLoaderServlet for
>>              - J2EE servers that do not follow the Servlet 2.4 
>> initialization order.
>>              -
>>              - Use 
>> WebApplicationContextUtils.getWebApplicationContext(servletContext)
>>              - to access it anywhere in the web application, outside of the 
>> framework.
>>              -
>>              - The root context is the parent of all servlet-specific 
>> contexts.
>>              - This means that its beans are automatically available in 
>> these child contexts,
>>              - both for getBean(name) calls and (external) bean references.
>>      -->
>>      <listener>
>>              <listener-class>
>>                      org.springframework.web.context.ContextLoaderListener
>>              </listener-class>
>>      </listener>
>>
>>      <!-- FACES SERVLET -->
>>      
>>      <servlet>
>>              <servlet-name>SourceCodeServlet</servlet-name>
>>              
>> <servlet-class>org.apache.myfaces.shared_tomahawk.util.servlet.SourceCodeServlet</servlet-class>
>>      </servlet>
>>
>>      <servlet>
>>              <servlet-name>Faces Servlet</servlet-name>
>>              <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
>>              <load-on-startup>1</load-on-startup>
>>      </servlet>
>>
>>      <!-- Faces Servlet Mapping -->
>>
>>      <!-- extension mapping -->
>>      <servlet-mapping>
>>              <servlet-name>Faces Servlet</servlet-name>
>>              <url-pattern>*.jsf</url-pattern>
>>      </servlet-mapping>
>>
>>      <!-- WELCOME FILES -->
>>
>>      <welcome-file-list>
>>              <!-- <welcome-file>index.jsp</welcome-file> -->
>>              <welcome-file>index.html</welcome-file>
>>              <!-- <welcome-file>./pages/web/homePage.jsp</welcome-file> -->
>>      </welcome-file-list>
>>
>> </web-app>
>>   
>>     
>
>
>   

Reply via email to