Uploaded image for project: 'Rampart'
  1. Rampart
  2. RAMPART-444

Mutliple Client cert is not working with axis2 client

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None
    • None

    Description

      Hi

      We have client which connecting to soap server and they have provided us client certificate which we have to installed in our keystore. It was working fine until we have other client certificate from server. We have installed it in keystore and first call to webservie is working fine but for the second call for other user we are getting the below Exception

      org.apache.axis2.AxisFault: unknown
              at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:517)
              at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:371)
              at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
              at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
              at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
              at com.auruspay.manager.issuer.participants.processor.credibanco.VPOSWS20SOAPStub.authorize(VPOSWS20SOAPStub.java:193)
              at com.auruspay.manager.issuer.participants.processor.credibanco.CredibancoCartridge.connect(CredibancoCartridge.java:109)
              at com.auruspay.manager.issuer.participants.processor.credibanco.PauseCredibancoProcessor.run(CredibancoParticipant.java:92)
              at java.lang.Thread.run(Thread.java:745)
      
      

      *Here is my code *

      ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem("/home/test/resource/", null);
      
      			VPOSWS20SOAPStub  serviceVPOSWS = new VPOSWS20SOAPStub(ctx, urlService);
      
      			ServiceClient client = serviceVPOSWS._getServiceClient();
      			client.engageModule("rampart");
      			Options clientOptions = new Options();
      			clientOptions.setProperty(WSSHandlerConstants.OUTFLOW_SECURITY, getOutflowConfiguration()); 
      			clientOptions.setProperty(WSSHandlerConstants.INFLOW_SECURITY, getInflowConfiguration());
      			//clientOptions.setUserName("client cert");
      			//clientOptions.setPassword("k12345");
      			clientOptions.setTo(new EndpointReference(urlService));
      			//clientOptions.setTimeOutInMilliSeconds(1000);
      			clientOptions.setProperty(HTTPConstants.SO_TIMEOUT, 10000);
      			clientOptions.setProperty(HTTPConstants.CONNECTION_TIMEOUT, 10000);
      			clientOptions.setManageSession(false);
      			
      			client.setOptions(clientOptions);
      			client.setCachingOperationContext(false);
      			System.out.println("URL :"+client.getOptions().getTo().getAddress());
      			serviceVPOSWS._setServiceClient( client );
      			
      			
      			
      			System.out.println(new Date());
      			reqResp = serviceVPOSWS.authorize(req);
      
      
       private  Parameter getOutflowConfiguration() { 
              OutflowConfiguration ofc = new OutflowConfiguration(); 
              ofc.setActionItems("Signature Encrypt Timestamp"); 
              String fileName= "COMKEYCONFIG_"+clientID+".properties";
              LOG.info(participant.getTxnLogKey() + " PROPERTIES FILE NAME:"+fileName);
              ofc.setSignaturePropFile(fileName);
              
              //ofc.setSignatureKeyIdentifier("X509KeyIdentifier");
              ofc.setSignatureKeyIdentifier("DirectReference") ;
              ofc.setUser("client cert"); 
              ofc.setPasswordCallbackClass("com.test.ClientPWCBHandler");
              ofc.setEncryptionPropFile(fileName); 
              ofc.setEncryptionUser("vposwscrypto");
              ofc.setEncryptionKeyIdentifier("X509KeyIdentifier"); 
              LOG.info("ofc.getProperty() OUTPUTFLOW : "+ofc.getProperty().toString());
              return ofc.getProperty(); 
          } 
      
          private  Parameter getInflowConfiguration() { 
              InflowConfiguration ifc = new InflowConfiguration();
      
              ifc.setActionItems("Signature Timestamp"); 
              String fileName= "COMKEYCONFIG_"+clientID+".properties";
              ifc.setSignaturePropFile(fileName);
              ifc.setPasswordCallbackClass("com.test.ClientPWCBHandler"); 
      
              LOG.info("ifc.getProperty() INPUTFLOW : "+ifc.getProperty().toString());
              return ifc.getProperty(); 
          }
      
      

      *Configuration for properties file *

      org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
      org.apache.ws.security.crypto.merlin.keystore.type=PKCS12
      org.apache.ws.security.crypto.merlin.keystore.password=k12345
      org.apache.ws.security.crypto.merlin.file=/home/test/Downloads/COM.p12

      Code us working on standalone application with supporting two user certificate but when deploy this on code on resin and JPOS framework it not working and giving me unknown fault

      Attachments

        Activity

          People

            Unassigned Unassigned
            amandloi Ashish Mandloi
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: