On 2/5/2012 12:04 PM, André Warnier wrote:
Hi.

I've just been following this thread, and this is not about the problem per se, but a comment about the overall design of the application.

The fact that you do a POST without being authenticated, and that you rely on the server to save the POST content while the authentication is taking place, and to "replay" this POST after a succesful authentication, is not really a part of the HTTP protocol (as per RFC 2616).
Form-based authentication is not part of the HTTP protocol. The entirety of form-based authentication is a complete hack of an application convention. Some specifications, e.g. the Java servlet specification, provide /some/ rules for form-based authentication within their realm, but in general form-based authentication is an "anything goes that a user running an interactive browser session can follow" convention.
It is a nice feature of Tomcat, and it simplifies the design of an application, and it avoids some user frustration. And maybe the paragraph cited below from the Servlet Spec is what "motivates" Tomcat to implement this.

But I don't think tjat you can count on this behaviour with all HTTP servers, or all authentication schemes. For example, if instead of using Tomcat's container-driven authentication (declarative security), your application came at some point to have to use a servlet-filter based authentication mechanism (programmatic security), this design may not work anymore (unless the filter itself had some POST-saving scheme).

Just thought I'd point that out.
Certainly this is an optional / quality of implementation feature. I'm perfectly aware that other form-based authentication solutions will not save POST data and may even fail to replay requests at all. That's fine and good. The application design is not dependent on this behavior. Rather, Tomcat documentation says this should work and it doesn't -- that's the issue.

Of course this isn't just an "application design" issue. If you're in the midst of your application, fill out a complex form, go out to lunch, come back and submit the form chances are good your session will have timed out. In this case, you really want to have POST body capture working -- otherwise usability will suffer.
Servlet Spec 3.0, 13.6.3.1 :
...
If the form based login is invoked because of an HTTP request, the original request
parameters must be preserved by the container for use if, on successful
authentication, it redirects the call to the requested resource.
...

Note the "if".

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



Reply via email to