2011-11-01 26 views
9

Rozważam przeniesienie aplikacji klienckiej z usługi autoryzacji XACML 2.0 na nowszą usługę XACML 3.0.Czym XACML 3.0 różni się od XACML 2.0?

Jakie zmiany lub problemy napotkam podczas migracji aplikacji klienckiej z żądań XACML 2.0 do żądań XACML 3.0?

+0

zostanę poproszony ten cały czas, więc jestem umieszczenie go tutaj jako FAQ na SO. – dthorpe

Odpowiedz

11

Największa różnica między XACML 2.0 i XACML 3.0 dla aplikacji klienckiej polega na tym, że struktura atrybutów w żądaniu authz zmieniła się znacząco w XACML 3.0.

W XACML 2.0 atrybuty zostały zorganizowane w temat, zasobów, środowiska, lub kategoriach działania przy użyciu tagów element XML:

<?xml version="1.0" encoding="UTF-8"?> 
<Request xmlns="urn:oasis:names:tc:xacml:2.0:context:schema:os" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:context:schema:os access_control-xacml-2.0-context-schema-os.xsd"> 
     <Subject> 
      <Attribute 
        AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id" 
        DataType="http://www.w3.org/2001/XMLSchema#string"> 
       <AttributeValue>Julius Hibbert</AttributeValue> 
      </Attribute> 
     </Subject> 
     <Resource> 
      <Attribute 
        AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" 
        DataType="http://www.w3.org/2001/XMLSchema#anyURI"> 
       <AttributeValue>http://medico.com/record/patient/BartSimpson</AttributeValue> 
      </Attribute> 
     </Resource> 
     <Action> 
      <Attribute 
        AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" 
        DataType="http://www.w3.org/2001/XMLSchema#string"> 
       <AttributeValue>read</AttributeValue> 
      </Attribute> 
     </Action> 
     <Environment/> 
</Request> 

W XACML 3.0, te kategorie są oznaczone za pomocą atrybutów XML zamiast tagów element XML:

<?xml version="1.0" encoding="utf-8"?> 
<Request xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17 http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd" ReturnPolicyIdList="false" CombinedDecision="false" xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"> 
    <Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"> 
     <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Julius Hibbert</AttributeValue> 
    </Attribute> 
    </Attributes> 
    <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"> 
    <Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"> 
     <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">http://medico.com/record/patient/BartSimpson</AttributeValue> 
    </Attribute> 
    </Attributes> 
    <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"> 
    <Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"> 
     <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue> 
    </Attribute> 
    </Attributes> 
    <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" /> 
</Request> 

elementu w XACML 2,0 <Subject> się <Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"> w XACML 3.0, na przykład. Podobnie jak w przypadku zasobów, środowiska i kategorii działań.

Ta zmiana strukturalna upraszcza model przetwarzania w celu obsługi żądań i ułatwia rozszerzenie modelu o niestandardowe kategorie specyficzne dla aplikacji lub domeny, bez konieczności sprawdzania poprawności schematu.

Istnieją nowe typy danych i funkcje zdefiniowane w XACML 3.0 do użycia w definicjach strategii. Typ danych AnyURI jest teraz inny niż typ danych łańcucha. Kilka algorytmów łączących 2.0 zostało wycofanych na rzecz nowych 3.0 ekwiwalentów, które definiują dokładniej, w jaki sposób niezdeterminowane stany rozprzestrzeniają się przez drzewo decyzyjne strategii. Stare algorytmy łączenia nadal są traktowane jako "starsze" artefakty.

Żądania i zasady XACML 2.0 mogą być mechanicznie konwertowane do formatu XACML 3.0 bez utraty informacji. Konwersja odpowiedzi 3.0 z powrotem na format 2.0 jest wykonalna, jeśli trzymasz się prostych zezwoleń/odmowy odpowiedzi.

4

Proszę sprawdzić wiki OASIS XACML TC na oficjalnej liście różnicami:

"Differences between XACML 2.0 and XACML 3.0"

W skrócie ...

Kluczową różnicą między XACML 2.0 i 3.0 jest w XACML nowych funkcji takie jak wyrażenia

  • zobowiązanie: można mieć elementy dynamiczne do sprawozdania zobowiązujących
  • wprowadzenie porad, które skutecznie uogólnia obowiązki na szerszy zakres:
  • wprowadzenie XACML v3.0 Administration and Delegation Profile Version 1.0. Do tej pory Axiomatics i ViewDS (http://www.viewDs.com) są jedynymi kompletnymi implementacjami XACML 3.0, które obejmują delegowanie. Jest to kluczowa funkcja w przypadku wdrożeń w chmurze i stowarzyszonych. Model delegacji jest wynikiem 5+ lat R & D w Szwedzkim Instytucie Informatyki (SICS).

Informacje te są podsumowane na stronie wiki XACML TC w OASIS. TC jest wspierany przez tak wiodącą organizację jak Oracle, IBM i Axiomatics. Redaktor XACML 3.0 specyfikacja to CTO Axiomatics, Erik Rissanen.

Również Kuppinger Cole wygłosił seminarium internetowe na temat: "Policy Based Access Control with XACML 3.0".

Na koniec podsumowałem nowe funkcje na "Enhancements and new features in #XACML 3.0".

+2

Oaza wiki ma wiele zalet, jeśli chodzi o różnice w Xacml 2.0 i Xamcl 3.0, ale wszystko zależy od składni polityki i jej funkcji. Aplikacje klienckie są w większości niepomne na ten poziom szczegółów wewnętrznych PDP. Na pytanie "W jaki sposób przejście z wersji 2.0 na 3.0 wpływa na mój kod klienta", musimy spojrzeć na zmiany w żądaniu i odpowiedzi. – dthorpe