[prev in list] [next in list] [prev in thread] [next in thread]
List: sandesha-dev
Subject: [jira] [Created] (AXIS2-5904) Intermittent Rampart policy configuration missing Error
From: "Mohamed Anis Mekki (JIRA)" <jira () apache ! org>
Date: 2018-01-04 12:29:00
Message-ID: JIRA.13128487.1515068889000.572414.1515068940197 () Atlassian ! JIRA
[Download RAW message or body]
Mohamed Anis Mekki created AXIS2-5904:
-----------------------------------------
Summary: Intermittent Rampart policy configuration missing Error
Key: AXIS2-5904
URL: https://issues.apache.org/jira/browse/AXIS2-5904
Project: Axis2
Issue Type: Bug
Components: client-api, codegen, modules, rpc
Affects Versions: 1.7.0
Environment: Apache Tomcat 9
Reporter: Mohamed Anis Mekki
Priority: Critical
I created a secured (sign body) Axis2 Web Service and generated .aar archive which I \
deployed to Axis2 Container (.war in Apache Tomcat). I then used Java2WSDL to \
generate a client stub. I finally created the class below that uses the client stub.
In a nutshell the main method of the class calls consecutively the first then the \
second method of the service. I create a separate service stub for each call, using \
serviceStub() method and configure correctly the rampart security policy using \
getRampartConfig() method.
{code:java}
package tn.nat.cnss.client;
import java.util.Properties;
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.ConfigurationContextFactory;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.neethi.Policy;
import org.apache.rampart.policy.model.CryptoConfig;
import org.apache.rampart.policy.model.RampartConfig;
import tn.nat.cnss.client.Sample2SignBodyServiceStub.ArrayOfString;
import tn.nat.cnss.client.Sample2SignBodyServiceStub.Operation1;
import tn.nat.cnss.client.Sample2SignBodyServiceStub.Operation2;
import tn.nat.cnss.client.Sample2SignBodyServiceStub.Operation1Response;
import tn.nat.cnss.client.Sample2SignBodyServiceStub.Operation2Response;
import tn.nat.cnss.client.Sample2SignBodyServiceStub.ServiceRequestOperation1;
import tn.nat.cnss.client.Sample2SignBodyServiceStub.ServiceRequestOperation2;
public class Sample2SignBodyServiceClient
{
private static Policy getRampartConfig()
{
RampartConfig rampartConfig = new RampartConfig();
rampartConfig.setUser("clientkey");
rampartConfig.setPwCbClass("tn.nat.cnss.client.PasswordCallBackHandler");
CryptoConfig sigCrypto = new CryptoConfig();
sigCrypto.setProvider("org.apache.ws.security.components.crypto.Merlin");
Properties props = new Properties();
props.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "JKS");
props.setProperty("org.apache.ws.security.crypto.merlin.file","keys/client.jks");
props.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", \
"clientStorePW");
sigCrypto.setProp(props);
rampartConfig.setSigCryptoConfig(sigCrypto);
Policy policy = new Policy();
policy.addAssertion(rampartConfig);
return policy;
}
private static Sample2SignBodyServiceStub serviceStub() throws AxisFault
{
org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.OFF);
ConfigurationContext ctx = \
ConfigurationContextFactory.createConfigurationContextFromFileSystem("client-repo", \
null); Sample2SignBodyServiceStub serviceStub = new \
Sample2SignBodyServiceStub(ctx,"http://localhost:8080/axis2/services/Sample2SignBodyService");
serviceStub._getServiceClient().engageModule("rampart");
Policy rampartConfig = getRampartConfig();
serviceStub._getServiceClient().getAxisService().getPolicySubject().attachPolicy(rampartConfig);
serviceStub._getServiceClient().getOptions().setTimeOutInMilliSeconds(300000);
serviceStub._getServiceClient().getOptions().setProperty(HTTPConstants.SO_TIMEOUT, \
new Integer(300000)); \
serviceStub._getServiceClient().getOptions().setProperty(HTTPConstants.CONNECTION_TIMEOUT, \
new Integer(300000)); return serviceStub;
}
public static Operation1Response operation1(String...parameters) throws \
RemoteException, AxisFault {
Sample2SignBodyServiceStub serviceStub = serviceStub();
ServiceRequestOperation1 req = new ServiceRequestOperation1();
req.setParam1(parameters[0]);
req.setParam2(parameters[1]);
req.setParam3(parameters[2]);
Operation1 operation = new Operation1();
operation.setServiceRequestOperation1(req);
Operation1Response resp = serviceStub.operation1(operation);
serviceStub._getServiceClient().cleanupTransport();
serviceStub._getServiceClient().cleanup();
serviceStub.cleanup();
return resp;
}
public static Operation2Response operation2(String...parameters) throws \
RemoteException, AxisFault {
Sample2SignBodyServiceStub serviceStub = serviceStub();
ServiceRequestOperation2 req = new ServiceRequestOperation2();
req.setParam1(parameters[0]);
req.setParam2(parameters[1]);
Operation2 operation = new Operation2();
operation.setServiceRequestOperation2(req);
Operation2Response resp = serviceStub.operation2(operation);
serviceStub._getServiceClient().cleanupTransport();
serviceStub._getServiceClient().cleanup();
serviceStub.cleanup();
return resp;
}
public static void main(String[] args) throws Exception
{
Operation1Response operation1Response = operation1("0", "99999", "99999");
System.out.println("operation1: Debut Execution");
System.out.println(operation1Response.get_return().getResult());
System.out.println("Nombre de colonnes: " + \
operation1Response.get_return().getNumberColumns()); System.out.println("Nombre de \
lignes: " + operation1Response.get_return().getNumberLines()); for (ArrayOfString \
array : operation1Response.get_return().getDataSet()) {
for (String s : array.localArray)
{
System.out.print(s + "\t");
}
System.out.println();
}
System.out.println("operation1: Fin Execution");
Operation2Response operation2Response = operation2("0", "99999");
System.out.println("operation2: Debut Execution");
System.out.println(operation2Response.get_return().getResult());
System.out.println("Nombre de colonnes: " + \
operation2Response.get_return().getNumberColumns()); System.out.println("Nombre de \
lignes: " + operation2Response.get_return().getNumberLines()); for (ArrayOfString \
array : operation2Response.get_return().getDataSet()) {
for (String s : array.localArray)
{
System.out.print(s + "\t");
}
System.out.println();
}
System.out.println("operation2: Fin Execution");
}
}
{code}
The problem is that execution leads to the intermittent error below. By intermittent \
I mean that sometimes both operation calls execute properly, but some other times \
only the first call or none.
{code:java}
org.apache.axis2.AxisFault: Rampart policy configuration missing
at org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:76)
at org.apache.axis2.engine.Phase.invokeHandler(Phase.java:335)
at org.apache.axis2.engine.Phase.invoke(Phase.java:308)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:250)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:415)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:399)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:150)
at tn.nat.cnss.client.Sample4SignEncryptBodyServiceSSLStub.operation2(Sample4SignEncryptBodyServiceSSLStub.java:307)
at tn.nat.cnss.client.Sample4SignEncryptBodyServiceSSLClient.operation2(Sample4SignEncryptBodyServiceSSLClient.java:121)
at tn.nat.cnss.client.Sample4SignEncryptBodyServiceSSLClient.main(Sample4SignEncryptBodyServiceSSLClient.java:162)
Caused by: org.apache.rampart.RampartException: Rampart policy configuration missing
at org.apache.rampart.builder.BindingBuilder.getSignatureBuilder(BindingBuilder.java:277)
at org.apache.rampart.builder.BindingBuilder.getSignatureBuilder(BindingBuilder.java:250)
at org.apache.rampart.builder.AsymmetricBindingBuilder.doSignature(AsymmetricBindingBuilder.java:760)
at org.apache.rampart.builder.AsymmetricBindingBuilder.doSignBeforeEncrypt(AsymmetricBindingBuilder.java:417)
at org.apache.rampart.builder.AsymmetricBindingBuilder.build(AsymmetricBindingBuilder.java:88)
at org.apache.rampart.MessageBuilder.build(MessageBuilder.java:147)
at org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:65)
... 10 more
{code}
I use Axis2 version 1.7.0 and Apache Tomcat 9.0 with Java 8.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic