Hi,

I want to use client-certificate authentication in our webapplication. 
There are two things that I really don't understand:

First:

Why is it necessary to set  clientAuth = true in the Factory-tag when 
configuring a Connector for SSL in server.xml, when only a certain part of 
the application should be protected for unauthorized access. It seems to 
me that this flag only should indicate whether mutual authentication 
(server and client authentication) should occur during the SSL-handshake 
or not. Consider the situation that I set this flag to false and setting a 
security role constraint for a certain servlet whith authentication method 
CLIENT-CERT. I would then expect that Tomcat asks the webbrowser to 
present the client certificate (and bind it as a attribute to the request 
object) the moment I try to to connect to this protected servlet. Instead 
I get the error No certificate chain found in this request.
The only possible moment to authenticate a user is during the mutual 
authentication (i.e. setting the clientAuth flag to yes) when the user is 
connected to the application for the first time . I think this not 
conforms to any of  Sun's servlet specifications.  Is this really a 
restriction to Tomcat or not?

Second:

When I set a security role constraint for a servlet with CLIENT-CERT as a 
authentication method, Tomcat forces me to put a CONFIDENTIAL transport 
garantee constraint for this servlet in web.xml. Although I understand 
that for the client certificate authentication process a SSL connection is 
used, I don't understand why the access to the servlet itself also must 
occur over a SSL-connection. I only want the CLIENT-CERT as a secure 
authenticating mechanism, but I do'nt always want a confidential transport 
(which puts a heavy load on the overall performance of my webapplication). 
Is this also a restriction to Tomcat? If not, what should I do to 
accomplish this?

Thanks in advance,

Ron Blom

 

Reply via email to