See my comments inline.


> -----Original Message-----
> From: Christopher Schultz [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, April 02, 2008 8:50 PM
> To: Tomcat Users List
> Subject: Re: How to force HTTPS on some of Struts-based site
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Gordon,
> 
> Hyatt, Gordon wrote:
> | The intent is as follows:
> |
> | For the main site: plain HTTP access
> |
> | For the administration and sample submission areas, require
> | authentication over HTTPS
> |
> | Disallow DELETE and PUT methods from all areas.
> 
> [snip]
> 
> | <security-constraint>
> |   <display-name>Administration Methods</display-name>
> |   <web-resource-collection>
> |     <web-resource-name>admin methods</web-resource-name>
> |     <description/>
> |     <url-pattern>/admin/*</url-pattern>
> |     <http-method>GET</http-method>
> |     <http-method>POST</http-method>
> |   </web-resource-collection>
> |   <auth-constraint>
> |     <role-name>admin_user</role-name>
> |   </auth-constraint>
> |   <user-data-constraint>
> |     <transport-guarantee>CONFIDENTIAL</transport-guarantee>
> |   </user-data-constraint>
> | </security-constraint>
> 
> That ought to fill your first 2 requirements. In order to prohibit PUT
> and DELETE, you'll need another <security-condstraint> section that
> specified no valid roles for the PUT and DELETE methods.
> 
> | I've also added a filter to capture all requests (/*) that checks
the
> | requested path; if that path is a "privileged" path (admin or
> | submission), then check that the user is authenticated and within
the
> | specified role (as configured in the filter).
> 
> This should not be necessary; the container should already handle the
> role checking (it's already configured in web.xml).
> 
> | I changed the role-name to * in the above auth-constraint and
removed
> | (commented out) the <login-config> section of web.xml.
> 
> Why?
> 
> | So my question is this: how do I force HTTPS on some portions of a
> | Struts-based web site.  With the filter, I can force authentication,
but
> | not the HTTPS constraint.
> 
> <user-data-constraint> should be enough to make that happen. Are you
> saying that a <security-constraint> with only the
<transport-guarantee>
> in it is not being respected by Tomcat?
> 
> Which version? Can you post your new web.xml instead of the original
one
> that has since been modified?
> 
I had everything working correctly using container-based security (using
digested passwords), including denying DELETE and PUT requests.  But,
due to the "enhanced" password encryption requirements of this site (a
requirements change near the time of delivery - a simple one-way digest
was deemed insufficient), I cannot use container-based authentication.
I won't go into too many details, but suffice it to say that the
passwords can now be "easily discovered" - each password is encrypted
with the exact same key.  

So I decided on the fallback to write a simple filter to handle the
authentication and redirection with Struts-based forms (simply because
the rest of the site uses Struts) and handle the actual authentication
(including password encryption) in a Struts Action.  In order for the
filter to receive the request, I had to remove some of the
container-based security (the PUT and DELETE security-constraint still
exists).

The only other way I could think of handling the password encryption
scheme was to write a custom Realm, which at the time, seemed
over-the-top to me.  Looking back, perhaps a custom Realm would have
been the way to go.

Gord


> - -chris
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.8 (MingW32)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
> 
> iEYEARECAAYFAkf0KawACgkQ9CaO5/Lv0PBfQgCeLQFA0sJNAG7MfPoa2I52orWz
> 20QAnjZd1EwJIEQoBzoK/g8nFmaGGuIh
> =s08N
> -----END PGP SIGNATURE-----


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to