2011-11-01 11 views
9

Sto considerando la migrazione della mia applicazione client dall'utilizzo di un servizio di autorizzazione XACML 2.0 all'utilizzo di un nuovo servizio XACML 3.0.In che modo XACML 3.0 differisce da XACML 2.0?

Quali modifiche o problemi dovrei eseguire nella migrazione della mia app client dal fare richieste XACML 2.0 a richieste XACML 3.0?

+0

ho chiesto questo tutto il tempo, quindi sto postando qui come una FAQ su SO. – dthorpe

risposta

11

La più grande differenza tra XACML 2.0 e XACML 3.0 per l'app client è che la struttura degli attributi nella richiesta authz è cambiata in modo significativo in XACML 3.0.

In XACML 2.0, gli attributi sono stati organizzati in soggetto, delle risorse, l'ambiente, o le categorie di azione con elementi XML tags:

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

In XACML 3.0, queste categorie sono indicate mediante attributi XML invece di tag degli elementi 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> 

L'elemento <Subject> in XACML 2.0 diventa <Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"> in XACML 3.0, per esempio. Idem per le risorse, l'ambiente e le categorie di azioni.

Questo cambiamento strutturale semplifica il modello di elaborazione per la gestione delle richieste e semplifica l'estensione del modello con categorie personalizzate specifiche dell'applicazione o specifiche del dominio senza eseguire il controllo della convalida dello schema.

Ci sono nuovi tipi di dati e funzioni definiti in XACML 3.0 da utilizzare nelle definizioni dei criteri. Il tipo di dati AnyURI è ora distinto dal tipo di dati stringa. Molti degli algoritmi di combinazione 2.0 sono stati deprecati a favore di nuovi equivalenti 3.0 che definiscono in modo più preciso il modo in cui gli stati indeterminati si propagano attraverso l'albero delle decisioni politiche. I vecchi algoritmi combinatori sono ancora inclusi come artefatti "legacy".

Le richieste e le politiche XACML 2.0 possono essere convertite meccanicamente in formato XACML 3.0 senza perdita di informazioni. Convertire una risposta 3.0 in formato 2.0 è fattibile se ti limiti a consentire/negare le risposte.

4

Controllare il wiki OASIS TC XACML per un elenco ufficiale delle differenze:

"Differences between XACML 2.0 and XACML 3.0"

In poche parole ...

La differenza fondamentale tra XACML 2.0 e 3.0 è XACML a nuove funzionalità come le espressioni

  • obbligo: si può avere parti dinamiche per le sue dichiarazioni obbligo
  • l'introduzione di un avviso che sta effettivamente generando obblighi per un ambito più ampio
  • l'introduzione dello XACML v3.0 Administration and Delegation Profile Version 1.0. Ad oggi Axiomatics e ViewDS (http://www.viewDs.com) sono le uniche implementazioni XACML 3.0 complete che includono la delega. È una funzionalità chiave per le distribuzioni cloud e federate. Il modello di delega è il risultato di oltre 5 anni di R & D presso l'Istituto svedese di informatica (SICS).

Queste informazioni sono riepilogate nella pagina wiki XACML di OASIS. Il TC è supportato da un'organizzazione di spicco come Oracle, IBM e Axiomatics. L'editor di XACML 3.0 specifica è CTO di Axiomatics, Erik Rissanen.

Inoltre, Kuppinger Cole ha pubblicato un webinar sull'argomento: "Policy Based Access Control with XACML 3.0".

Infine, ho riassunto le nuove funzionalità su "Enhancements and new features in #XACML 3.0".

+2

Il wiki di Oasis ha molte informazioni sulle differenze di Xacml 2.0 rispetto a Xamcl 3.0, ma si tratta di sintassi e funzionalità della politica. Le applicazioni client sono per lo più ignare di quel livello di dettaglio interno PDP. Per la domanda "Come si muoverà tra 2.0 e 3.0 il mio codice cliente", dobbiamo esaminare le modifiche nella richiesta e nella risposta. – dthorpe

Problemi correlati