Hello
Im was trying to execute a WS, in Axis 1.4, with a Signature but Im
having problems and I dont know why.
I know that the WS without any security are working correctly, but
when I try to implements Signature Security, Im having the error: "
faultString: WSDoAllReceiver: security processing failed; nested
exception is:
org.apache.ws.security.WSSecurityException: The signature verification
failed"
I was reading that the problem is because the signed message is
modificated after it was signed, and It was resolving changing this
two globalParameters: (it's how I have)
<parameter name="disablePrettyXML" value="true"/>
<parameter name="enableNamespacePrefixOptimization" value="false"/>
In my keystore, aml_server.jks, I only have one entry which is one
Certificate with the "amlbrite" alias and the same name for its
password.
For the client side I create the EngineConfiguration instead of using
a client.wsdd, like:
public static EngineConfiguration createClientConfig(){
AxisProperties.setProperty("enableNamespacePrefixOptimization","false");
AxisProperties.setProperty("disablePrettyXML", "true");
SimpleProvider clientConfig = new SimpleProvider();
Handler securitySenderHandler = (Handler) new WSDoAllSender();
securitySenderHandler.setOption(WSHandlerConstants.ACTION,
WSHandlerConstants.SIGNATURE);
securitySenderHandler.setOption(WSHandlerConstants.USER,"amlbrite");
securitySenderHandler.setOption(WSHandlerConstants.PW_CALLBACK_CLASS,"com.repeat.client.PWCallback");
securitySenderHandler.setOption(WSHandlerConstants.SIG_PROP_FILE,
"crypto.properties");
securitySenderHandler.setOption(WSHandlerConstants.ENCRYPTION_USER,"amlbrite");
securitySenderHandler.setOption(WSHandlerConstants.SIG_KEY_ID,
"DirectReference");
securitySenderHandler.setOption(WSHandlerConstants.MUST_UNDERSTAND,
"false");
SimpleChain reqHandler = new SimpleChain();
SimpleChain respHandler = new SimpleChain();
reqHandler.addHandler(securitySenderHandler);
Handler pivot = (Handler) new HTTPSender();
Handler transport = new SimpleTargetedChain(reqHandler,
pivot, respHandler);
clientConfig.deployTransport(HTTPTransport.DEFAULT_TRANSPORT_NAME,transport);
return clientConfig;
}
Anything in any file are wrong?
Any help is welcome
Thanks to all.
[1 / 4] My server-config.wsdd is:
-------------------------------------------------------------------------------------
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<globalConfiguration>
<parameter name="sendMultiRefs" value="true"/>
<parameter name="disablePrettyXML" value="true"/>
<parameter name="adminPassword" value="admin"/>
<parameter name="attachments.Directory"
value="C:\Servers\apache-tomcat-5.5.25\webapps\repeat\WEB-INF\attachments"/>
<parameter name="dotNetSoapEncFix" value="true"/>
<parameter name="enableNamespacePrefixOptimization" value="false"/>
<parameter name="sendXMLDeclaration" value="true"/>
<parameter name="attachments.implementation"
value="org.apache.axis.attachments.AttachmentsImpl"/>
<parameter name="sendXsiTypes" value="true"/>
<requestFlow>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="session"/>
</handler>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="request"/>
<parameter name="extension" value=".jwr"/>
</handler>
</requestFlow>
</globalConfiguration>
<handler name="URLMapper"
type="java:org.apache.axis.handlers.http.URLMapper"/>
<handler name="LocalResponder"
type="java:org.apache.axis.transport.local.LocalResponder"/>
<handler name="Authenticate"
type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<service name="EchoRepeat" provider="java:RPC" style="document" use="literal">
<requestFlow>
<handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">
<parameter name="signatureKeyIdentifier" value="DirectReference"/>
<parameter name="signaturePropFile" value="crypto.properties"/>
<parameter name="passwordCallbackClass"
value="com.repeat.client.PWCallback"/>
<parameter name="action" value="Signature"/>
</handler>
</requestFlow>
<responseFlow>
<handler type="soapmonitor"/>
</responseFlow>
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="application"/>
<parameter name="className" value="com.repeat.main.EchoRepeat"/>
<parameter name="sendMultiRefs" value="false"/>
<parameter name="sendXsiTypes" value="false"/>
</service>
[2 / 4] Mi WS calling is:
-------------------------------------------------------------------------------------
{
EchoRepeatservice = null;
EngineConfiguration config = createClientConfig();
EchoRepeatServiceLocator locator = new
EchoRepeatServiceLocator(config);
locator.setEchoRepeatEndpointAddress(Propertymanager.getInstance().get("echoEndPoint"));
service = locator.getEchoRepeat();
System.out.println(service.echo(args[0]));
}
[3/4] crypto.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.alias=amlbrite
org.apache.ws.security.crypto.merlin.alias.password=amlbrite
org.apache.ws.security.crypto.merlin.keystore.password=amlbrite
org.apache.ws.security.crypto.merlin.file=aml_server.jks
[4/ 4] The stack error:
-------------------------------------------------------------------------------
<service name="EchoRepeat" provider="java:RPC" style="document" use="literal">
<requestFlow>
<handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">
<parameter name="signatureKeyIdentifier" value="DirectReference"/>
<parameter name="signaturePropFile" value="crypto.properties"/>
<parameter name="passwordCallbackClass"
value="com.repeat.client.PWCallback"/>
<parameter name="action" value="Signature"/>
</handler>
</requestFlow>
<responseFlow>
<handler type="soapmonitor"/>
</responseFlow>
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="application"/>
<parameter name="className" value="com.repeat.main.EchoRepeat"/>
<parameter name="sendMultiRefs" value="false"/>
<parameter name="sendXsiTypes" value="false"/>
</service>
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown
Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at
org.apache.axis.handlers.SimpleSessionHandler.doClient(SimpleSessionHandler.java:173)
at
org.apache.axis.handlers.SimpleSessionHandler.invoke(SimpleSessionHandler.java:157)
at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at
com.repeat.client.LoginWSSoapBindingStub.echo(LoginWSSoapBindingStub.java:224)
at com.repeat.client.Main.main(Main.java:21)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]