https://issues.apache.org/bugzilla/show_bug.cgi?id=51940

             Bug #: 51940
           Summary: Form Authentication Valve should restore request body
                    on PUT method
           Product: Tomcat 6
           Version: 6.0.33
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
        AssignedTo: dev@tomcat.apache.org
        ReportedBy: nsush...@openfinance.com
    Classification: Unclassified


In Tomcat 6 (and 7), Form Authentication valve restores the original request
after a POST with successful authentication and redirect is followed by the
client's GET. In case of the POST, the valve also restores the original
request's body. However, it doesn't do that for a PUT. To be consistent, Tomcat
should restore the body on PUT as well.

The patch would be in FormAuthenticator.restoreRequest(Request, Session) [1],
to change from

if ("POST".equalsIgnoreCase(saved.getMethod())) {

to

if ("POST".equalsIgnoreCase(saved.getMethod()) ||
"PUT".equalsIgnoreCase(saved.getMethod())
) {

[1]
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/authenticator/FormAuthenticator.java?view=markup#l450


Maybe related to Bug #48692.


This issue was discussed on users mailing list archived at

http://markmail.org/thread/klafrhln32v3zcau

and

http://mail-archives.apache.org/mod_mbox/tomcat-users/201109.mbox/%3C3052451.ZX31eH6Cz8@strela%3E


Regarding "Re: Should Form Authentication Valve restore request body on a
PUT?", 
on Thursday, September 29, 2011 17:04:27,
Christopher Schultz wrote to Tomcat Users List <us...@tomcat.apache.org>

> ...
> The servlet spec (v3.0, SRV 13.6.3.1) has this to say:
> "
> 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.
> "
> 
> It doesn't say what kinds of HTTP verbs should or should not be
> supported, but GET and PUT seem entirely obvious. It doesn't say that
> the request body needs to be maintained, only the "request
> parameters". Since the servlet specification doesn't have any
> provisions for fetching request parameters from PUT operations, I
> suppose the spec therefore doesn't directly recommend that PUT bodies
> be stored for later use like when POST is used.
> ...
> On the face of it, that seems reasonable. I haven't read-through the
> code that then replays the saved-request so I'm not sure if there's
> more to be done.


Regarding "Re: Should Form Authentication Valve restore request body on a
PUT?", 
on Friday, September 30, 2011 13:10:55,
Mark Thomas wrote to Tomcat Users List <us...@tomcat.apache.org>

> I'd have no objection so the proposed change.
> 
> Mark

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

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

Reply via email to