2017-10-19 10 views
1

Ich versuche definiert XACML Richtlinien zu testen, in WSO2 durch WSO2 API-Manager, wie in dem folgenden Link erklärteWSO2APIM Nachricht Mediation - API-Aufruf blockiert

https://docs.wso2.com/display/AM210/Enabling+Role-Based+Access+Control+Using+XACML

Die Politik validiert wird immer und ich kann Sehen Sie sich die "Permit" -Entscheidung in den Protokollen an, aber der API-Manager gibt keine Antwort zurück, und der Aufruf wird blockiert und die Anforderung wird nach einiger Zeit beendet.

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 

Einfügen die Nachricht Mediationsrichtliniendatei

  <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> 

Wenn ich nur in OnAccept reagieren, statt send, der Anruf kehrt sofort, aber meine Back-End-API nicht aufgerufen wird.

Fehle ich hier etwas?

Danke, Albie Morken

+0

Können Sie Ihre Synapse-Datei für diese API teilen sehen, dass? –

+0

Aktualisiert die Nachrichtenvermittlung Policy-Datei –

+0

beschlossen, WSO2-API-Manager zu umgehen, da es nicht wie erwartet funktioniert –

Antwort

0

Es sieht wie folgt aus

  1. kein Problem mit XACML ist, sondern mit dem API-Manager
  2. Sie nicht einen glücklichen Weg für, wenn der PDP antwortet Permit definiert haben . Sie können von DEBUG - EntitlementMediator OnAccept sequence is not defined.

Versuchen Sie definieren diesen Weg

+0

Es hat nicht funktioniert! Ich habe die OnAccept-Sequenz hinzugefügt, immer noch hängt der Anruf! \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t Ich bin gerade Timeout-Fehler bekommen mich Verfallen ssage ID: urn: Uuid: 448797c5-1c5e-41cf-aa59-1b8d31ee1067; Nachricht nach GLOBAL_TIMEOUT von: 120 Sekunden für AnonymousEndpoint, URI Nicht sicher, was passiert –

Verwandte Themen