[prev in list] [next in list] [prev in thread] [next in thread]
List: sandesha-dev
Subject: [jira] [Updated] (AXIS2-5904) Intermittent Rampart policy configuration missing Error
From: "Mohamed Anis Mekki (JIRA)" <jira () apache ! org>
Date: 2018-01-05 12:29:00
Message-ID: JIRA.13128487.1515068889000.581387.1515155340037 () Atlassian ! JIRA
[Download RAW message or body]
[ https://issues.apache.org/jira/browse/AXIS2-5904?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel \
]
Mohamed Anis Mekki updated AXIS2-5904:
--------------------------------------
Affects Version/s: 1.7.7
> 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, 1.7.7
> 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