JAX-WS身份验证SoapUI与客户端应用程序

时间:2018-01-24 06:52:21

标签: security authentication soap jax-ws soapui

我需要在JBoss上使用JAX-WS创建一个SOAP客户端。 问题是我无法通过身份验证。

我在SoapUI中实现了一个测试,当我设置请求属性用户名和密码soap ui screenshot

使用以下代码

        URL kbaURL = new URL("http://...");
        IkfzService ikfzService = new IkfzService(kbaURL);
        IkfzPortType ikfzPortType = ikfzService.getIkfzSOAP();
        Map<String, Object> requestContext = ((BindingProvider)ikfzPortType).getRequestContext();
        requestContext.put(BindingProvider.USERNAME_PROPERTY, "...");
        requestContext.put(BindingProvider.PASSWORD_PROPERTY, "...");

其中URL,用户名和密码与我正在获取的SOAPUI中的相同

javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException:
Failed to create service.
...
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: 
Problem parsing 'http://..'.: java.io.IOException: Server returned HTTP response code: 
401 for URL: http://..

我错过了什么?

1 个答案:

答案 0 :(得分:0)

这应该是您要完成的基本示例 - 如果您需要更多帮助或澄清,请告诉我

//the WSDL/webservice endpoint
private static final String WSDL_URL = "http://localhost:8080/MyWebService/MyWebService?wsdl";

URL url = new URL(WSDL_URL);
QName qname = new QName("http://ws.mycompany.com/", MyWebServiceImpl");

Service theWSService = Service.create(url, qname);

//returns the interface for MyWebServiceImpl
TheWSServiceIF port = theWSService.getPort(TheWSServiceIF.class);

//Setup Security
Map<String, Object> requestContext = ((BindingProvider)port).getRequestContext();
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, WS_URL);

Map<String, List<String>> requestHeaders = new HashMap<String, List<String>>();
requestHeaders.put("Username", Collections.singletonList("myUserName"));
requestHeaders.put("Password", Collections.singletonList("myPasword"));
requestContext.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
/**********************************************************************/

//actually call the web service method, print results
System.out.println(port.getMyWebServiceData());