Samples JDK
CustomValve.java
1 package com.freemindcafe.https.clientauth;
2 
3 import java.io.IOException;
4 import java.security.cert.X509Certificate;
5 
6 import javax.naming.InvalidNameException;
7 import javax.naming.ldap.LdapName;
8 import javax.naming.ldap.Rdn;
9 import javax.servlet.ServletException;
10 import javax.servlet.http.HttpServletRequest;
11 
12 import org.apache.catalina.connector.Request;
13 import org.apache.catalina.connector.Response;
14 import org.apache.catalina.valves.ValveBase;
15 
16 public class CustomValve extends ValveBase{
17 
18  @Override
19  public void invoke(Request arg0, Response arg1) throws IOException,
20  ServletException {
21  HttpServletRequest req = arg0;
22  X509Certificate certs[] =
23  (X509Certificate[])req.getAttribute("javax.servlet.request.X509Certificate");
24  String dn = certs[0].getSubjectX500Principal().getName();
25  LdapName ldapDN;
26  try {
27  ldapDN = new LdapName(dn);
28  for(Rdn rdn: ldapDN.getRdns()) {
29  System.err.println(rdn.getType() + " -> " + rdn.getValue());
30  }
31  } catch (InvalidNameException e) {
32  // TODO Auto-generated catch block
33  e.printStackTrace();
34  }
35 
36  }
37 
38 }