有没有办法从2路ssl连接中的java代码恢复客户端证书的通用名称?

时间:2011-05-30 18:06:43

标签: java soap ssl weblogic

我们有一个weblogic服务器,配置为在与客户端建立与Web服务解决方案的ssl连接时需要客户端证书。 ssl握手完美地工作,因为我们已经配置了所需的全部内容。

现在,在连接之后,我们收到一个soap请求,其中客户端ID是此请求soap的字段之一。 我们需要做的是检查此id与用于在我们的服务器内连接的客户端证书的通用名称,以保证交易。 这对我们来说非常重要,因为这是银行交易,涉及很多钱,我们需要避免欺诈。

那么:有没有办法恢复用于使用weblogic 10.3.3服务器在服务器上运行的java代码建立双向ssl连接的客户端证书的通用名称?

[]中

1 个答案:

答案 0 :(得分:6)

可以使用HttpServletRequest.getAttribute(String)方法调用从传入的Servlet请求中读取客户端的证书。名称为javax.servlet.request.X509Certificate的属性在创建Request对象的实例以供servlet / webservice处理时由servlet容器填充。

然后可以从X500Principal对象获取证书的DN,该对象通过getX500Principal方法调用从证书对象获得。这不会给CN,但会以指定的格式提供完整的专有名称; this could be parsed to provide the CN

就访问ServletRequest对象而言,JAX-WS Web服务可以编程为读取允许访问底层HttpServletRequest对象的MessageContext