使用Java-Metro,从服务器端,如何获取ssl客户端证书详细信息?

时间:2014-05-26 07:23:16

标签: java ssl glassfish-3 java-metro-framework

我正在使用Java Metro框架发布Web服务, 我配置ssl握手要求客户端的ssl证书, 如何在服务器代码中捕获ssl客户端证书详细信息? 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

我得到了我的问题的解决方案,

以CalculatorWS为例,您必须编写以下内容以获取证书详细信息:

@WebService()
public class CalculatorWS {

   // NEW
   private WebServiceContext wsCtx;
   @Resource
   private void setWSContext(WebServiceContext wsCtx) {
       this.wsCtx = wsCtx;
   }
   // END NEW

   public CalculatorWS() {}

   @WebMethod(operationName = "add", action="add")
   public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
      // NEW
      if (this.wsCtx != null) {
         MessageContext msgCtx = this.wsCtx.getMessageContext();
         HttpServletRequest httpSR = (HttpServletRequest)msgCtx.get(MessageContext.SERVLET_REQUEST );
         X509Certificate[] x509Cert = (X509Certificate[])httpSR.getAttribute("javax.servlet.request.X509Certificate");
      }
      // END NEW
  ...