Hi all,
Heres what I'm using:
OS: Win 2000
Tomcat version: 4
Client Browser: IE 5+
I am trying to protect a jsp/servlet resource in my website. I want to give access to
the resource if the right certificate is provided by the user. Making a ssl connection
with client authentication is not a problem. This is the part of my server.xml that
allows ssl with client authentication:
---- snip begin [server.xml] -----
<Connector className="org.apache.catalina.connector.http.HttpConnector" port="8443"
minProcessors="5" maxProcessors="75" enableLookups="true" acceptCount="10" debug="0"
scheme="https" secure="true">
<Factory className="org.apache.catalina.net.SSLServerSocketFactory"
clientAuth="true" protocol="TLS"/>
</Connector>
---- snip end [server.xml] -----
So whenever I go to my webserver (https://localhost:8443") IE pops up a list of
certificates that I can send back to the server. I select one of the many certificates
that my website has given me and send it back to the server.
_Heres my problem_:
At the server I want to check the Common Name in the certificate sent by the client. I
figured that I will be able to do so by getting the Principal via
"request.getUserPrincipal()" and digging into it. But it returns null. Then I realized
that I must make some additions/changes in the tomcat-users.xml and web.xml. But I am
not really clear as to what these additions/changes are and I have not found any good
resource on the web explaining the same. Heres how parts of my xml files look like:
---- snip begin [web.xml] -----
<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>tomcat</role-name>
</auth-constraint>
</security-constraint>
<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Tomcat Manager Application</realm-name>
</login-config>
---- snip end [web.xml] -----
---- snip begin [tomcat-users.xml] -----
<tomcat-users>
<user name="tomcat" password="tomcat" roles="tomcat" />
<user name="role1" password="tomcat" roles="role1" />
<user name="both" password="tomcat" roles="tomcat,role1" />
<!-- Common name in the clients certificate is 3763 -->
<user name="3763" password="tomcat" roles="tomcat" />
</tomcat-users>
---- snip end [tomcat-users.xml] -----
The Common Name in the certificate is 3763 (the certificate I want to grant access
to). However I have know idea where the password comes into picture.
I am sure things are incorrect or missing, I'd really appreciate if anyone can help me.
Thanks
-Chaitresh