如何使用邮件安全性和客户端证书身份验证调用Web安全性?

时间:2011-05-10 22:10:26

标签: java wcf jax-ws client-certificates

我需要使用java客户端调用Web服务。 此服务通过消息级别的证书(Ws-Security,而不是SSL)对客户端进行身份验证。

应该可以,因为我可以使用this dialog中具有相互证书安全性的JAX-WS生成Web服务。

但我无法创建客户端。有没有人有想法?

1 个答案:

答案 0 :(得分:1)

我自己没有尝试过,而是来自http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/

使用XWSS配置邮件安全性

Application Server包含使用XWS-Security保护JAX-WS应用程序所需的所有JAR文件,但是,要查看示例应用程序,必须下载并安装独立的Java WSDP软件包。您可以从http://java.sun.com/webservices/downloads/webservicespack.html下载Java WSDP。

要使用XWSS向现有JAX-WS应用程序添加消息安全性,请在客户端执行以下步骤:

  • 创建客户端安全配置。客户端安全配置文件指定将用于客户端应用程序的消息安全操作的顺序和类型。例如,执行数字签名操作的简单安全配置如下所示:

                 

            <xwss:Sign id="s" includeTimestamp="true">
                <xwss:X509Token encodingType="http://docs.oasis-
                  open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
                                valueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
                  x509-token-profile-1.0#X509SubjectKeyIdentifier"
                                certificateAlias="xws-security-client"
                                keyReferenceType="Identifier"/>
            </xwss:Sign>
    
        </xwss:SecurityConfiguration>
    </xwss:Service>
    <xwss:SecurityEnvironmentHandler>
        simple.client.SecurityEnvironmentHandler
    </xwss:SecurityEnvironmentHandler>
    

    有关编写和理解安全配置以及设置SecurityEnvironmentHandlers的更多信息,请参阅http://java.sun.com/webservices/docs/1.6/tutorial/doc/index.html上的Java Web Services Developer Pack 1.6教程。

  • 在客户端代码中,创建使用生成的安全配置初始化的XWSSecurityConfiguration对象。以下是您将在客户端文件中使用的代码示例。有关使用此代码的完整文件的示例,请查看\ jaxws2.0 \ simple-doclit \ src \ simple \ client \目录中的示例客户端。

    FileInputStream f = new FileInputStream("./etc/client_security_config.xml"); 
    XWSSecurityConfiguration config = SecurityConfigurationFactory.newXWSSecurityConfiguration(f);  
    
  • 使用RequestContext属性在XWSSecurityConfiguration.MESSAGE_SECURITY_CONFIGURATION上设置安全配置信息。有关使用此代码的完整文件的示例,请查看\ jaxws2.0 \ simple-doclit \ src \ simple \ client \目录中的示例客户端。

    // put the security config info
    ((BindingProvider)stub).getRequestContext().put(
        XWSSecurityConfiguration.MESSAGE_SECURITY_CONFIGURATION,
        config); 
    
  • 在存根上调用方法,就像编写客户端一样,而不考虑添加XWS-Security。来自\ jaxws2.0 \ simple-doclit \ src \ simple \ client \目录的应用程序示例如下所示:

    Holder<String> hold = new Holder("Hello !");
    stub.ping(ticket, hold);