[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