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

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

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

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

[]中

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

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

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