0

I'm working with JBOSS AS 7 and I noticed an odd behavior, concerning servlet mapping.

My web.xml :

<context-param>
    <param-name>APPLICATION_NAME</param-name>
    <param-value>scom</param-value>
</context-param>

<servlet>
    <servlet-name>admin</servlet-name>
    <servlet-class>com.afp.iris.sr.sco.scom.servlet.ScomIHMServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>admin</servlet-name>
    <url-pattern>/admin/*</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>Resteasy</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    <init-param>
        <param-name>resteasy.scan</param-name>
        <param-value>true</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
<filter-mapping>
    <filter-name>IrisFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
    <filter-name>CAS Single Sign Out Filter</filter-name>
    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
    <init-param>
        <param-name>artifactParameterName</param-name>
        <param-value>SAMLart</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>CAS Single Sign Out Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>

<filter>
    <filter-name>CAS Authentication Filter</filter-name>
    <filter-class>org.jasig.cas.client.authentication.Saml11AuthenticationFilter</filter-class>
    <init-param>
        <param-name>casServerLoginUrl</param-name>
        <param-value>${cas.server.url.login}</param-value>
    </init-param>
    <init-param>
        <param-name>serverName</param-name>
        <param-value>${COMPONENT_HOST_URL}</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>CAS Authentication Filter</filter-name>
    <url-pattern>/admin</url-pattern>
</filter-mapping>

<filter>
    <filter-name>CAS Validation Filter</filter-name>
    <filter-class>org.jasig.cas.client.validation.Saml11TicketValidationFilter</filter-class>
    <init-param>
        <param-name>casServerUrlPrefix</param-name>
        <param-value>${cas.server.url.prefix}</param-value>
    </init-param>
    <init-param>
        <param-name>serverName</param-name>
        <param-value>${COMPONENT_HOST_URL}</param-value>
    </init-param>
    <init-param>
        <param-name>redirectAfterValidation</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>useSession</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>acceptAnyProxy</param-name>
        <param-value>true</param-value>
    </init-param>
     <init-param>
        <param-name>tolerance</param-name>
        <param-value>${cas.tolerance}</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CAS Validation Filter</filter-name>
    <url-pattern>/admin</url-pattern>
</filter-mapping>

<filter>
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    <url-pattern>/admin</url-pattern>
</filter-mapping>

<filter>
    <filter-name>CAS Assertion Thread Local Filter</filter-name>
    <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>CAS Assertion Thread Local Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

When I tape the following URL /admin I get redirected to the cas server which is normal, after that I get redirected to ScomIHMServlet, and this is the part that I miss in all this process, /admin doesn't match /admin/* so how could this be achieved ? Sorry for the long web.xml file well i tried to post the most important parts of it, any suggestion would be apreciated.

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
Youssef NAIT
  • 1,362
  • 11
  • 27

1 Answers1

0

You should interpret /admin as a folder.

If it were theoretically a file, then it indeed won't match.

If it were a folder, then you should interpret actual URL as /admin/. Surely this matches /admin/* as * means "zero or more characters".

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
  • Suppose now that I tape `/admin/` in my URL would it work the same as `/admin` (would the filters in my web.xml redirect me to CAS) ? – Youssef NAIT Feb 19 '16 at 17:10
  • The redirect is a server specific configuration, which is not controllable from webapp on by servlet mapping, but any sane server (including JBoss) should by default behave like so. Just test and discover. If failing unexpectedly, consult server documentation for detail. – BalusC Feb 19 '16 at 17:23