我们有一个weblogic服务器,配置为在与客户端建立与Web服务解决方案的ssl连接时需要客户端证书。 ssl握手完美地工作,因为我们已经配置了所需的全部内容。
现在,在连接之后,我们收到一个soap请求,其中客户端ID是此请求soap的字段之一。 我们需要做的是检查此id与用于在我们的服务器内连接的客户端证书的通用名称,以保证交易。 这对我们来说非常重要,因为这是银行交易,涉及很多钱,我们需要避免欺诈。
那么:有没有办法恢复用于使用weblogic 10.3.3服务器在服务器上运行的java代码建立双向ssl连接的客户端证书的通用名称?
[]中
答案 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。