Samples JDK
SSLInterceptor.java
1 package com.freemindcafe.apache.cxf.jaxrs.sample9;
2 
3 import java.security.cert.X509Certificate;
4 
5 import javax.naming.InvalidNameException;
6 import javax.naming.ldap.LdapName;
7 import javax.naming.ldap.Rdn;
8 import javax.servlet.http.HttpServletRequest;
9 
10 import org.apache.cxf.interceptor.Fault;
11 import org.apache.cxf.message.XMLMessage;
12 import org.apache.cxf.phase.AbstractPhaseInterceptor;
13 import org.apache.cxf.phase.Phase;
14 import org.apache.cxf.transport.http.AbstractHTTPDestination;
15 
16 //Phase.PRE_PROTOCOL
17 public class SSLInterceptor extends AbstractPhaseInterceptor<XMLMessage>{
18 
19  public SSLInterceptor(){
20  super(Phase.PRE_PROTOCOL);
21  }
22 
23  public void handleMessage(XMLMessage message) throws Fault {
24  System.out.println("SSLInterceptor-----------------");
25  //if you want to read more http header messages, just use get method to obtain from HttpServletRequest.
26  HttpServletRequest request = (HttpServletRequest) message.get(AbstractHTTPDestination.HTTP_REQUEST);
27  X509Certificate certs[] =
28  (X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate");
29  String dn = certs[0].getSubjectX500Principal().getName();
30  LdapName ldapDN;
31  try {
32  ldapDN = new LdapName(dn);
33  for(Rdn rdn: ldapDN.getRdns()) {
34  System.out.println(rdn.getType() + " -> " + rdn.getValue());
35  }
36  } catch (InvalidNameException e) {
37  // TODO Auto-generated catch block
38  e.printStackTrace();
39  }
40 
41  }
42 
43 
44 }