Я пытаюсь протестировать политики XACML, определенные в WSO2 IS, через WSO2 API Manager, как описано в следующей ссылке.
https://docs.wso2.com/display/AM210/Enabling+Role-Based+Access+Control+Using+XACML
Политика проверяется, и я вижу решение «Разрешить» в журналах, но диспетчер API не возвращает никакого ответа, вызов блокируется, а время ожидания запроса истекает через некоторое время.
DEBUG - EntitlementMediator Entitlement Decision is : Permit
DEBUG - EntitlementMediator User is authorized to perform the action
DEBUG - EntitlementMediator OnAccept sequence is not defined.
INFO - SourceHandler Writer null when calling informWriterError
WARN - SourceHandler Connection time out after request is read: http-incoming-19 Socket Timeout : 60000 Remote Address : /0:0:0:0:0:0:0:1:63398
WARN - TimeoutHandler Expiring message ID : urn:uuid:045f7259-cc8b-46a7-b9a2-832429163531; dropping message after GLOBAL_TIMEOUT of : 120 seconds for Endpoint
Вставка файла политики передачи сообщений
<sequence xmlns="http://ws.apache.org/ns/synapse" name="EM"> <entitlementService xmlns="http://ws.apache.org/ns/synapse" remoteServiceUrl="https://localhost:9443/services" remoteServiceUserName="admin" remoteServicePassword="admin" callbackClass="org.wso2.sample.handlers.entitlement.APIEntitlementCallbackHandler">
<onReject>
<makefault version="soap12">
<code xmlns:soap12Env="http://www.w3.org/2003/05/soap-envelope"
value="soap12Env:Receiver"/>
<reason value="UNAUTHORIZED"/>
<node/>
<role/>
<detail>XACML Authorization Failed</detail>
</makefault>
<respond/>
</onReject>
<onAccept>
<log level="trace" xmlns="http://ws.apache.org/ns/synapse"/>
<send>
<endpoint>
<address uri="http://localhost:8080"/>
</endpoint>
</send>
</onAccept>
<obligations/>
<advice/>
</entitlementService>
</sequence>
Если я просто использую ответ в OnAccept вместо отправки, вызов возвращается немедленно, но мой внутренний API не вызывается.
Я что-то упустил здесь?
Спасибо, Альби Моркен.