Я пытаюсь отправить информацию для SÉCURITÉ WebService, но я со следующей ошибкой, когда он должен сказать мне ответОшибка Rampart Приемник
[ERROR] Ожидаемая зашифрованная часть отсутствует org.apache. axis2.AxisFault: Ожидаемая зашифрованную часть недостающей на org.apache.rampart.handler.RampartReceiver.setFaultCodeAndThrowAxisFault (RampartReceiver.java:186) в org.apache.rampart.handler.RampartReceiver.invoke (RampartReceiver.java:99) в 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.receive (AxisEngine.java:156) по адресу org.apache.axis2.description. OutInAxisOperationClient.handleResponse (OutInAxisOperation.java:357) на org.apache.axis2.description.OutInAxisOperationClient.send (OutInAxisOperation.java:414) в org.apache.axis2.description.OutInAxisOperationClient.executeImpl (OutInAxisOperation.java:225) на org.apache.axis2.client.OperationClient.execute (OperationClient.java:150) на tutorial.somar.Soma001SNAPSHOTStub.add (Soma001SNAPSHOTStub.java:190) в tutorial.somar.teste2.main (teste2.java: 65) Вызвано: org.apache.rampart.RampartException: ожидаемая зашифрованная часть отсутствует a т org.apache.rampart.PolicyBasedResultsValidator.validateEncrSig (PolicyBasedResultsValidator.java:276) на org.apache.rampart.PolicyBasedResultsValidator.validate (PolicyBasedResultsValidator.java:153) на org.apache.rampart.RampartEngine.process (RampartEngine.java : 280) at org.apache.rampart.handler.RampartReceiver.invoke (RampartReceiver.java:92) ... 10 еще Исключение из потока "main" org.apache.axis2.AxisFault: ожидаемая зашифрованная часть отсутствует at org.apache.rampart.handler.RampartReceiver.setFaultCodeAndThrowAxisFault (RampartReceiver.java:186) at org.apache.rampart.handler.RampartReceiver.invoke (RampartReceiver.java:99) по адресу org.apache.axis2.engine.Phase. invokeHandler (Phase.java:335) at org.apache.ax is2.engine.Phase.invoke (Phase.java:308) at org.apache.axis2.engine.AxisEngine.invoke (AxisEngine.java:250) at org.apache.axis2.engine.AxisEngine.receive (AxisEngine. Java: 156) на org.apache.axis2.description.OutInAxisOperationClient.handleResponse (OutInAxisOperation.java:357) на org.apache.axis2.description.OutInAxisOperationClient.send (OutInAxisOperation.java:414) на org.apache. axis2.description.OutInAxisOperationClient.executeImpl (OutInAxisOperation.java:225) at org.apache.axis2.client.OperationClient.execute (OperationClient.java:150) at tutorial.somar.Soma001SNAPSHOTStub.add (Soma001SNAPSHOTStub.java:190) at tutorial.somar.teste2.main (teste2.java:65) Вызвано: org.apache.rampart.RampartException : Ожидаемая зашифрованную часть недостающей на org.apache.rampart.PolicyBasedResultsValidator.validateEncrSig (PolicyBasedResultsValidator.java:276) в org.apache.rampart.PolicyBasedResultsValidator.validate (PolicyBasedResultsValidator.java:153) в org.apache.rampart.RampartEngine .process (RampartEngine.java:280) в org.apache.rampart.handler.RampartReceiver.invoke (RampartReceiver.java:92) ... 10 более
Я использую Maven на сервере:
вот услуги.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>
и SecureService.java
public int add(int a, int b) {
System.out.println(a+b);
return a+b;
}
мой WS-клиент, как это:
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());
}
}
Я использую Axis2 1.7.1, 1.7.0
вала