Проблема
На WSO2 ESB 4.8.1 есть endoint с включенной безопасностью, для него указана некая policy. Безопасность в ней описана в соответствии со стандартом WS-SecurityPolicy 1.1 (http://specs.xmlsoap.org/ws/2005/07/securitypolicy/ws-securitypolicy.pdf), о чем говорит пространство имен http://schemas.xmlsoap.org/ws/2005/07/securitypolicy. При попытке использовать этот endpoint для отправки запроса возникает ошибка:
org.apache.synapse.SynapseException: Unexpected error during sending message out
at org.apache.synapse.core.axis2.Axis2Sender.handleException(Axis2Sender.java:172)
at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:71)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:338)
at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:333)
at org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:59)
...
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131)
at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:166)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
...
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.RuntimeException: Incorrect inclusion value: -1
at org.apache.ws.secpolicy.model.Token.setInclusion(Token.java:56)
at org.apache.ws.secpolicy11.builders.X509TokenBuilder.build(X509TokenBuilder.java:61)
at org.apache.neethi.AssertionBuilderFactory.build(AssertionBuilderFactory.java:99)
at org.apache.neethi.PolicyEngine.processOperationElement(PolicyEngine.java:225)
at org.apache.neethi.PolicyEngine.getPolicyOperator(PolicyEngine.java:154)
at org.apache.neethi.PolicyEngine.getPolicy(PolicyEngine.java:126)
at org.apache.ws.secpolicy11.builders.InitiatorTokenBuilder.build(InitiatorTokenBuilder.java:40)
at org.apache.neethi.AssertionBuilderFactory.build(AssertionBuilderFactory.java:99)
...
at org.apache.neethi.PolicyEngine.getPolicy(PolicyEngine.java:126)
at org.apache.synapse.util.MessageHelper.getPolicy(MessageHelper.java:522)
at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:404)
at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:59)
... 25 more
Причина
В данном случае причина была в том, что в указанной для endpoint'а policy способ включения токена был указан как:
sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Always"
Данный URL соответствует спецификации WS-SecutiryPolicy 1.2 (http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/ws-securitypolicy-1.2-spec-os.doc), тогда как для 1.1 он должен иметь следующий вид:
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Always"
Комментариев нет:
Отправить комментарий