Greetings,

I brought this up in November.  Remy and I have a disagreement 
on how important fixing this bug is.  I want to see if there is
a quorum of other committers who understand the problem and think
it should be fixed prior to the next stable build release of 4.1.

The immediate problem is that current Tomcat behavior causes
browsers to submit auth credentials to webapps other than the
webapp who originally sent the 401 challenge.

Most web servers, like Apache, are careful to redirect for
trailing slashes before challenging for authentication.  Tomcat
does this backward.  The result is the client will usually cache
the need for auth for the entire domain and not just a single 
webapp.

Here is a repeat of the scenario I mentioned in November
<http://marc.theaimsgroup.com/?l=tomcat-dev&m=103673355109222&w=2>

 <Context path="/foo" docBase="foo" />
 <Context path="/bar" docBase="bar" />

foo and bar web.xml protected with
    <security-constraint>
      <web-resource-collection>
        <web-resource-name>name </web-resource-name>
        <url-pattern>/*</url-pattern>
      </web-resource-collection>
      <auth-constraint>
        <role-name>admin</role-name>
      </auth-constraint>
    </security-constraint>

Current behavior:
Request                 Response
GET /foo                401
 (at this point browsers will send credentials to any url in this domain)
GET /foo with auth      301 redirect to /foo/
GET /foo/               200
GET /bar with auth
         ^^^^^^^^^

Correct behavior:
GET /foo                301 redirect to /foo/
GET /foo/               401
GET /foo/ with auth     200
GET /bar without auth
         ^^^^^^^^^^^^

My proposed patch is attached to bug 14616
<http://issues.apache.org/bugzilla/show_bug.cgi?id=14616>
While this does not cover the case of subdirectories within 
a context, it does fix the most egregious case for context
roots.

Please comment if you are not comfortable with credentials being
inadvertently shared between all webapps on a given domain.

Keith

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

Reply via email to