2016-05-24 7 views
0

Ich versuche, eine Information für eine securite Webservice zu senden, aber ich bin mit dem folgenden Fehler, wenn er mir die Antwort muss sagenFehler Rampart Empfänger

[ERROR] Erwartete verschlüsselten Teil fehlt org.apache. axis2.AxisFault: Erwartete verschlüsselten Teil fehlt bei org.apache.rampart.handler.RampartReceiver.setFaultCodeAndThrowAxisFault (RampartReceiver.java:186) bei org.apache.rampart.handler.RampartReceiver.invoke (RampartReceiver.java:99) bei org.apache.axis2.engine.Phase.invokeHandler (Phase.java:335) bei org.apache.axis2.engine.Phase.invoke (Phase.java308) bei org.apache.axis2.engine.AxisEngine.invoke (AxisEngine.java:250) bei org.apache.axis2.engine.AxisEngine.receive (AxisEngine.java:156) bei org.apache.axis2.description. OutInAxisOperationClient.handleResponse (OutInAxisOperation.java:357) bei org.apache.axis2.description.OutInAxisOperationClient.send (OutInAxisOperation.java:414) bei org.apache.axis2.description.OutInAxisOperationClient.executeImpl (OutInAxisOperation.java:225) bei org.apache.axis2.client.OperationClient.execute (OperationClient.java:150) bei tutorial.somar.Soma001SNAPSHOTStub.add (Soma001SNAPSHOTStub.java:190) bei tutorial.somar.teste2.main (teste2.java: 65) verursacht durch: org.apache.rampart.RampartException: Erwartetes verschlüsseltes Teil fehlt a t org.apache.rampart.PolicyBasedResultsValidator.validateEncrSig (PolicyBasedResultsValidator.java:276) bei org.apache.rampart.PolicyBasedResultsValidator.validate (PolicyBasedResultsValidator.java:153) bei org.apache.rampart.RampartEngine.process (RampartEngine.java : 280) bei org.apache.rampart.handler.RampartReceiver.invoke (RampartReceiver.java:92) ... 10 mehr Ausnahme im Thread "Haupt" org.apache.axis2.AxisFault: Erwartetes verschlüsseltes Teil fehlt bei org.apache.rampart.handler.RampartReceiver.setFaultCodeAndThrowAxisFault (RampartReceiver.java:186) bei org.apache.rampart.handler.RampartReceiver.invoke (RampartReceiver.java:99) bei org.apache.axis2.engine.Phase. invokeHandler (Phase.java:335) bei org.apache.ax is2.engine.Phase.invoke (Phase.java308) bei org.apache.axis2.engine.AxisEngine.invoke (AxisEngine.java:250) bei org.apache.axis2.engine.AxisEngine.receive (AxisEngine. Java: 156) bei org.apache.axis2.description.OutInAxisOperationClient.handleResponse (OutInAxisOperation.java:357) bei org.apache.axis2.description.OutInAxisOperationClient.send (OutInAxisOperation.java:414) bei org.apache. axis2.description.OutInAxisOperationClient.executeImpl (OutInAxisOperation.java:225) bei org.apache.axis2.client.OperationClient.execute (OperationClient.java:150) bei tutorial.somar.Soma001SNAPSHOTStub.add (Soma001SNAPSHOTStub.java:190) bei tutorial.somar.teste2.main (teste2.java:65) verursacht durch: org.apache.rampart.RampartException : Verschlüsselten Teil bei org.apache.rampart.PolicyBasedResultsValidator.validateEncrSig (PolicyBasedResultsValidator.java:276) bei org.apache.rampart.PolicyBasedResultsValidator.validate (PolicyBasedResultsValidator.java:153) bei org.apache.rampart.RampartEngine Erwartet fehlt beträgt.Verfahren (RampartEngine.java:280) bei org.apache.rampart.handler.RampartReceiver.invoke (RampartReceiver.java:92) ... 10 weitere

ich maven auf dem Server mit:

hier ist der Service.xml

<module ref="rampart"/> 

<parameter name="ServiceClass" locked="false">tutorial.somar.SecureService</parameter> 

<operation name="add"> 
    <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> 
</operation> 

<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
       <wsp:Policy> 
         <sp:MustSupportRefKeyIdentifier/> 
         <sp:MustSupportRefIssuerSerial/> 
       </wsp:Policy> 
      </sp:Wss10> 

    <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
    <sp:Body/> 
    </sp:SignedParts> 
    <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
    <sp:Body/> 
    </sp:EncryptedParts> 

    <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
    <ramp:user>serverkey</ramp:user> 
    <ramp:encryptionUser>clientkey</ramp:encryptionUser> 
    <ramp:passwordCallbackClass>tutorial.somar.PWCBHandler</ramp:passwordCallbackClass> 

    <ramp:signatureCrypto> 
     <ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin"> 
     <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property> 
     <ramp:property name="org.apache.ws.security.crypto.merlin.file">server.keystore</ramp:property> 
     <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">nosecret</ramp:property> 
     </ramp:crypto> 
    </ramp:signatureCrypto> 

    <ramp:encryptionCrypto> 
     <ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin"> 
     <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property> 
     <ramp:property name="org.apache.ws.security.crypto.merlin.file">server.keystore</ramp:property> 
     <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">nosecret</ramp:property> 
     </ramp:crypto> 
    </ramp:encryptionCrypto> 

    </ramp:RampartConfig> 

</wsp:All> 

und die SecureService.java

public int add(int a, int b) { 
    System.out.println(a+b); 
    return a+b; 
} 

mein WS-Client ist wie folgt:

public class teste2 { 
private static Policy loadPolicy(String name) throws XMLStreamException{ 
    ClassLoader loader = teste2.class.getClassLoader(); 
    InputStream resource = loader.getResourceAsStream(name); 
    StAXOMBuilder builder = new StAXOMBuilder(resource); 
    return PolicyEngine.getPolicy(builder.getDocumentElement()); 
} 

public static void main (String[] args) throws XMLStreamException, RemoteException{ 
    /*if(args.length < 4){ 
     System.out.println("Usage:\n java " + 
       "com.sosnoski.ws.library.adb.WebServiceClient protocol host port path"); 
     System.exit(1); 
    }*/ 

    //String target = args[0] + "://" + args[1] + ":" + args[2] + args[3]; 
    String target = "http://localhost:8070/axis2/services/soma-0.0.1-SNAPSHOT"; 
    System.out.println("Connecting to " + target); 

    ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem("client-repo", null); 

    Soma001SNAPSHOTStub stub = new Soma001SNAPSHOTStub(ctx ,target); 
    //FacebookStub stub = new FacebookStub(target); 

    ServiceClient client = stub._getServiceClient(); 
    Options options = client.getOptions(); 

    Policy policy = loadPolicy("signencr-policy-client.xml"); 
    //Policy policy = loadPolicy("policy.xml"); 
    //Policy policy = loadPolicy("sign-policy-client.xml"); 
    options.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy); 
    options.setUserName("libuser"); 
    options.setPassword("books"); 
    client.engageModule("rampart"); 


    int a = 4; 
    int b = 4; 
    Add n = new Add(); 

    n.setA(a); 
    n.setB(b); 
    AddResponse result = stub.add(n); 

    System.out.println(a + " + " + b + " = " + result.get_return()); 
} 

}

Ich bin mit Axis2 1.7.1, 1.7.0 Wall

Antwort

0

Ich löse das Problem ... Ich ändere nur diese Linie

<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never"/> 

für die

<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never"> 
       <wsp:Policy> 
       <sp:RequireThumbprintReference/> 
      </wsp:Policy> 
      </sp:X509Token> 

Frieden.

Verwandte Themen