2017-09-26 3 views
0

Ich habe eine Anforderung, wo ich WSO2 Identity Server (5.3) internes LDAP mit WSO2 API Manager (2.1) integriert habe.Policy Entitlement XACML in WSO2 Identity Server mit WSO2 API Manager

Ich habe die Änderungen vorgenommen, indem ich die LDAP-Konfiguration in wso2-api-2.1 \ repository \ conf \ user-mgt.xml entkommentiert habe, indem ich den unten stehenden Code auskommentiert habe.

Ich habe alle Schritte in der WSO2-Dokumentation für die rollenbasierte Zugriffssteuerung mit XACML wie folgt durchgeführt. https://docs.wso2.com/display/AM210/Enabling+Role-Based+Access+Control+Using+XACML

Ich habe eine Rolle 'Schooladmin' und einen Benutzer 'testuser' erstellt. Ich habe die Rolle 'schooladmin' auf 'testuser' im Identity Server zusammen mit allen erteilten Berechtigungen zugewiesen.

Ich bin in der Lage, die PDP in WSO2 Identity Store zu testen und es funktioniert gut.

Probleme:

  1. Wie Identity Server und API-Manager über LDAP verbunden sind, kann ich PDP nicht sehen in Identity Server in API-Manager entwickelt. Ist das korrektes Verhalten?

  2. Ich erstellte und implementierte eine REST-API-Basis einen Business-Service und fügte während der Konfiguration, wie in der WSO2-Dokumentation erwähnt, Berechtigung hinzu.

      <sequence xmlns="http://ws.apache.org/ns/synapse" name="newEntitlementMediator"> 
           <entitlementService xmlns="http://ws.apache.org/ns/synapse" remoteServiceUrl="https://localhost:9443/services" remoteServiceUserName="admin" remoteServicePassword="admin" 
           callbackClass="org.wso2.sample.handlers.entitlement.APIEntitlementCallbackHandler"/> 
           </sequence> 
    

Als ich neu entwickelte REST-API in Postman versuchen, erhalte ich immer die folgenden Fehler.

<am:fault xmlns:am="http://wso2.org/apimanager"> 
    <am:code>0</am:code> 
    <am:type>Status report</am:type> 
    <am:message>Runtime Error</am:message> 
    <am:description>User is not authorized to perform the action</am:description> 
</am:fault> 

Zum Testen Ich schaffe neue Token mit der korrekten Benutzer Testuser 'vorgesehen, um den unter-Dienst - https://localhost:8244/token

Bitte legen nahe, ob es eine Einschränkung oder vermisste ich jede Konfiguration.

Ich füge die Richtlinie hinzu, die im WSO2 IS-Server für die Berechtigung erstellt wurde. Bitte überprüfen Sie.

<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="iib_policy_entitlement" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-unless-permit" Version="1.0"> 
    <Target/> 
    <Rule Effect="Permit" RuleId="iib_test_rule"> 
     <Target> 
     <AnyOf> 
      <AllOf> 
       <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> 
        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/login/v1</AttributeValue> 
        <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/> 
       </Match> 
       <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> 
        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">POST</AttributeValue> 
        <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/> 
       </Match> 
      </AllOf> 
     </AnyOf> 
     </Target> 
     <Condition> 
     <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of"> 
      <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-bag"> 
       <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">iib_role</AttributeValue> 
      </Apply> 
      <AttributeDesignator AttributeId="http://wso2.org/claims/role" Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/> 
     </Apply> 
     </Condition> 
    </Rule> 
</Policy> 

Danke, Abhishek

Antwort

0

Antworten zu Frage 1: Ja, LDAP nur als Benutzerspeicher verwendet wird. Metadaten werden in einem separaten DB gespeichert. Wenn Sie die Metadaten ebenfalls teilen müssen, haben Sie auch die Metadaten-DBs gemeinsam. Bitte ändern Sie /repository/conf/datasourses/master-datasourses.xml dafür.

Antwort für Frage 2: Kann diese Frage nicht direkt beantworten, aber ich kann Ihnen einige Punkte geben, um zu überprüfen.

  • Überprüfen Sie, ob Sie den erstellten Benutzer und die Rolle vom API-Manager aus sehen können.
  • Möchten Sie, dass IS als Schlüsselmanager für die APIM fungiert? Wenn ja, überprüfen Sie diese Dokumentation. IS as a Key Manager
+0

Ich bin in der Lage zu sehen, Benutzer und Rollen in IS erstellt in APIM reflektiert.Das Problem, das angegeben wird, ist, wenn ich Anknüpfung anschließe, die oben erwähnt wird, um eine Verbindung zu PDP herzustellen, das in IS für Rolle-based Authentifizierung mit XACML erstellt wird. Es schlägt fehl und zeigt den Fehler an, da der Benutzer nicht berechtigt ist, die Aktion auszuführen. Ich bin mir nicht sicher, was hier fehlt. Ich habe alle in der Referenzdokumentation erwähnten Schritte durchgeführt. https://docs.wso2.com/display/AM210/Enabling+Role-Based+Access+Control+Mit+XACML – AbhishekM