Hello everybody,
I'm having a hard time making Composer's Web Service block work properly.
I always perform successfully Web Service requests using the Web Service block. In those cases properties are set as follow:
ALIAS- Name: myWS
EXCEPTIONS- Exceptions: error.badfetch, error.com.genesyslab.composer.webservice.badFetch
INFORMATION- Service URL:
https://192.168.xx.xx/myWS/myWS?wsdlINVOKING CONFIGURATIONS- Available Services: myWS_Service
- Bindings: SOAP11port
- Operations: inquirySomethingBySomething
- Service End Point Variable: Variable(URL_endpoint_myWS)
- Use Protocol: SOAP
SECURITY- Authentication Type: Anonymous
SOAP MESSAGE GENERATION- Custom SOAP Envelope: Custom SOAP Message (myWS_request)
WEB SERVICE OUTPUT- Output Result: output(WebServiceRespondeMessage=myWS_response)
Now I have to perform a request to a Web Service that needs a mutual authentication.
When the request is made through SoapUI I simply put the path for the certificate (.p12) in the "SSL Setting" tab (preferences).
Everything works fine here.
When it comes to Composer, however, I can't really find a way to include the certification in the request and I always get the following error (MCP log):
var myWS_response = {'errorMsg':'Mismatched close taghr at character 70 of The element type "hr" must be terminated by the matching end-tag "</hr>".'};
I found out that this come from the WS Response when there's no certificate (from SoapUI response with no certificate):
<html>
<head><title>400 No required SSL certificate was sent</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>No required SSL certificate was sent</center>
<hr><center>nginx</center>
</body>
</html>
In this case properties are set as follow:
ALIAS- Name: myWS
EXCEPTIONS- Exceptions: error.badfetch, error.com.genesyslab.composer.webservice.badFetch
INFORMATION- Service URL:
https://192.168.xx.xx/myWS/myWS?wsdl (<- WS that requires no certificate)
INVOKING CONFIGURATIONS- Available Services: myWS_Service
- Bindings: SOAP11port
- Operations: inquirySomethingBySomething
- Service End Point Variable: Variable(URL_endpoint_myWS) (<- same WS that requires certificate)
- Use Protocol: SOAP
SECURITY- Authentication Type: SOAP Digital Signature Authentication
SOAP DIGITAL SIGNATURE- Certificate Alias: myCertAlias
- Certificate Or Key Store Location: C:\myFolder\Composer\composer_workspace\myProject\Resources\certificate.p12
- Key Algrithm: RSA
- Key Store Password: myPws
SOAP MESSAGE GENERATION- Custom SOAP Envelope: Custom SOAP Message (myWS_request)
WEB SERVICE OUTPUT- Output Result: output(WebServiceRespondeMessage=myWS_response)
What am I doing wrong?
Here's what I've tried by now:
- Converted certificate from .p12 to .jks, modified tomcat server.xml this way:
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="C:\myFolder\Composer\composer_workspace\myProject\Resources\certificate.jks"
keystorePass="myPsw"
keyAlias=myCertAlias"
keystoreType="JKS"
/>
- Upgraded my Composer version to 8.1.5 from 8.1.410 to enable Trust Store Location field, putting there there certificate.jks path and password
Thank you for any advice!