【问题标题】:How to bind jbossws properties files to soap request and response message in soapui?如何将 jbossws 属性文件绑定到soapui 中的soap 请求和响应消息?
【发布时间】:2016-08-12 10:42:18
【问题描述】:

如您所知,在 wildfly ws-security 配置中,有 2 个属性文件绑定到 Web 服务。在服务器端 server.properties 绑定如下,

== server.properties

org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=password123
org.apache.ws.security.crypto.merlin.keystore.alias=servicekey
org.apache.ws.security.crypto.merlin.keystore.file=META-INF/serviceKeystore.jks

== jaxws-endpoint-config.xml

<endpoint-config>     
   <config-name>Custom WS-Security Endpoint</config-name>     
   <property>       
      <property-name>ws-security.signature.properties</property-name>       
      <property-value>META-INF/server.properties</property-value>     
   </property>     
   <property>       
      <property-name>ws-security.callback-handler</property-name>       
      <property-value>
      com.aaa.soap.KeystorePasswordCallback
      </property-value>        
   </property>   
   </endpoint-config>

== HelloWorld.java

@WebService
@EndpointConfig(configFile = "WEB-INF/jaxws-endpoint-config.xml", configName = "Custom WS-Security Endpoint")
public class HelloWorld implements IHelloWorld {
    @Override
    public String sayHello(String name) {
        // TODO Auto-generated method stub
        return "Hello " + name;
    }
}

在客户端,JSP 文件将 client.properties 绑定到soap请求。

== client.properties

org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=password123
org.apache.ws.security.crypto.merlin.keystore.alias=servicekey
org.apache.ws.security.crypto.merlin.keystore.file=META-INF/serviceKeystore.jks

== index.jsp

<body>
<% 
String SERVICE_URL = "http://localhost:8080/SOAPEncryptWeb/HelloWorld";

try {
    QName serviceName = new QName("http://soap.aaa.com/", "HelloWorldService");

    URL wsdlURL;
    wsdlURL = new URL(SERVICE_URL + "?wsdl");
    Service service = Service.create(wsdlURL, serviceName);

    IHelloWorld port = (IHelloWorld) service.getPort(IHelloWorld.class); 

    ((BindingProvider) port).getRequestContext().put(SecurityConstants.CALLBACK_HANDLER, new KeystorePasswordCallback());
    ((BindingProvider) port).getRequestContext().put(SecurityConstants.ENCRYPT_PROPERTIES, Thread.currentThread().getContextClassLoader().getResource("META-INF/client.properties"));
    ((BindingProvider) port).getRequestContext().put(SecurityConstants.ENCRYPT_USERNAME, "servicekey");
    out.println(port.sayHello("jina"));
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
%>
</body>

所以在 soapui 应用程序中,我重新制作了这些客户端/服务器属性,如下所示,

但我被困在这部分。这些服务器和客户端属性已在 Eclipse IDE 上成功绑定。但是在 SoapUI 应用程序中,我不知道如何将这些属性与肥皂请求和响应绑定。

【问题讨论】:

    标签: soap soapui ws-security


    【解决方案1】:

    要在SOAPUI 上使用WS 安全性,您必须使用其特定的WS-Security 配置,如下所示。首先在 Navigator 窗口中双击您的项目名称:

    如上图所示,这里有一个 WS-Security Configurations 选项卡。

    首先添加您的密钥库,其中包含执行操作的密钥。为此,请单击 Keystores 选项卡并根据您的clients.properties 添加您的密钥库信息:

    其次,根据您的代码,您似乎希望将传出消息加密到 Web 服务,因此选择 Outgoing WS-Security Configuration 选项卡并添加新配置。您的传出/传入属性位于您的问题中未显示的WEB-INF/jaxws-endpoint-config.xml 配置文件中,因此请根据此文件的内容配置此选项卡。配置后可能如下所示:

    最后要检查您的配置,转到您的 SOAP 请求,右键单击请求面板并选择 Outgoing wss > Apply [your ws cfg name]: p>

    更多详细信息,请查看SOAPUI documentation

    我希望这能为您指明正确的方向。

    【讨论】:

    • 感谢您的回复。根据您的建议,我在soapui 中设置了wss 配置。但是在将 [my ws cfg name] 应用于 SOAP 请求的最后一步中,我遇到了异常。这是我的soap消息格式, schemas.xmlsoap.org/soap/envelope" xmlns:soap="soap.aaa.com">
      Jina
      错误是“缺少名称为 [{soap.aaa.com}sayHello] 的消息部分。有什么建议吗?
    • @JosephHwang 很抱歉我的回复延迟了,但我已经出去了几天......终于你解决了问题吗?
    • 感谢您的回复。但恐怕我仍然坚持这个问题。请检查这个线程。 stackoverflow.com/questions/38938239/…
    猜你喜欢
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多