Клиент Axis 2 поддерживает несколько сертификатов для одной и той же конечной точки веб-сервиса

У нас есть клиент, который подключается к мыльному серверу, и они предоставили нам сертификат клиента, который мы должны установить в нашем хранилище ключей. Это работало нормально, пока у нас нет другого клиентского сертификата с сервера. Мы установили его в хранилище ключей, и первый вызов веб-службы работает нормально, но для второго вызова другого пользователя мы получаем следующее исключение:

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:107)
        at com.auruspay.manager.issuer.participants.processor.credibanco.PauseCredibancoProcessor.run(CredibancoParticipant.java:92)
        at java.lang.Thread.run(Thread.java:745)

Вот как я настраиваю аутентификацию:

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=pass
org.apache.ws.security.crypto.merlin.file=/home/amandloi/Development/Kushki/Colombia/Prodcution_Certificate/COM5766.p12
org.apache.ws.security.crypto.merlin.keystore.alias=vposwscrypto
com.alignet.www.vpos2.services.vposws20soap.url=https://testecommerce.credibanco.com/vpos2/services/VPOSWS20SOAP?wsdl
com.alignet.www.vpos2.services.vposws20.time.out.client=15000
rutaram=/home/amandloi/Development/Kushki/Colombia/updated plugin/credibanco-plugin-api-java-2.1.0/resources

Это фрагмент кода, где я собираю клиент и выбираю сертификат для использования:

    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(); 
    }

Напишите, что мы работаем над автономным приложением с поддержкой двух пользовательских сертификатов, но при развертывании этого кода на смоле и в среде JPOS оно не работает и выдает мне неизвестную ошибку

0 ответов

Другие вопросы по тегам