Introduzione
- VI -
documenti conformi ad esso, oppure autorizzazioni specificate su un
elemento vengono propagate a tutti i sottoelementi/attributi contenuti
in esso. Il modello consente inoltre di specificare sia autorizzazioni
positive che negative, ed è stato quindi necessario definire opportuni
meccanismi per la risoluzione dei conflitti.
Il risultato di una richiesta di accesso da parte di un utente è in
generale una vista, contenente le porzioni di documento per cui l’utente
possiede autorizzazione positiva.
Perché un documento possa essere visualizzato e/o manipolato è
necessario che venga elaborato da un apposito componente software: il
Parser. Esistono due tipi di parser: quelli che accettano documenti well-
formed e quelli più restrittivi che eseguendo la verifica di conformità del
documento XML rispetto ad un DTD assegnato. Supponendo che
l’utente a cui viene inviata la vista del documento abbia un parser
validante è necessario inviare anche il DTD a cui la vista è conforme.
Descrizione delle attività svolte
Il presente lavoro di tesi è stato sviluppato presso il Laboratorio di Basi
di Dati. Per lo sviluppo, dello strumento X-Access, è stato scelto eXcelon
2.1, un database della Object Design che sfrutta XML come formato di
memorizzazione dei dati, e consente l’accesso ai documenti anche via
Web. Un’altra caratteristica che rende eXcelon flessibile è la possibilità
di sviluppare delle server exstension, programmi scritti in Java i quali,
una volta installati all’interno di eXcelon, permettono di estendere le
funzionalità del database includendo anche quei comportamenti che
non sono stati previsti dalla casa produttrice. L’implementazione del
meccanismo di controllo degli accessi ai documenti, la realizzazione
delle viste e dei DTD, e le interrogazione sulle viste avviene appunto
all’interno di una server exstension. Questa server exstension è stata
sviluppata in Java utilizzando JDK1.2.
Per la gestione di documenti XML X-Access utilizza il formato DOM
(Document Object Model), una specifica del W3C (World Wide Web
Introduzione
- VII -
Consoritum) che definisce una serie di interfacce per la manipolazione
di documenti XML. Secondo questa specifica gli oggetti di protezione di
un documento XML vengono rappresentati come nodi di un albero. In
X-Access l’assegnazione dei diritti di accesso ai vari frammenti di un
documento si riconduce all’associazione delle autorizzazioni con i nodi
dell’albero che rappresentano il documento.
Per individuare i nodi a cui assegnare le autorizzazioni è stato utilizzato
XPath, un linguaggio definito dal W3C per individuare determinati nodi
all’interno di un file XML. Le espressioni XPath permettono di
individuare un insieme di nodi non solo in base alla loro posizione, ma
anche in base al loro contenuto e alle relazioni con gli altri nodi.
Sfruttando le potenzialità di questo linguaggio è stato possibile
aumentare la granularità nell’assegnazione delle autorizzazioni che
possono non solo essere assegnate sul singolo elemento ma possono
anche essere diversificate tra gli attributi che caratterizzano l’elemento e
il suo contenuto.
Una volta assegnate le autorizzazioni, X-Access crea la vista sul
documento. Per fare questo è stato necessario affrontare il problema di
creare un nuovo documento vista nel quale gli elementi con
autorizzazione negativa venissero fisicamente rimossi. L’eliminazione di
alcuni nodi dall’albero produce modifiche sulla struttura ad albero del
documento originale. E’ stato pertanto sviluppato un algoritmo che
permette, dopo aver eliminato i nodi con autorizzazione negativa, di
ricostruire la struttura ad albero della vista risultante secondo la
sintassi XML. Sono stati anche definiti un insieme di vincoli sulla
specifica delle autorizzazioni in modo che le informazioni contenute
nella vista mantengano un senso logico.
Come precedentemente detto, si vuole che le viste oltre che well-formed
siano anche valide; è necessario dunque che insieme alla vista venga
costruito un DTD a cui la vista è conforme. L’algoritmo che costruisce il
DTD si basa sempre su una struttura DOM. In questa struttura ogni
Introduzione
- VIII -
nodo, figlio della radice, rappresenta un elemento della vista e per
ognuno di questi elementi vengono elencati tutti gli attributi e tutti i
nodi presenti come figli del nodo considerato. Partendo da questa
struttura, che è una sorta di dizionario degli elementi della vista, viene
poi generato il DTD vero e proprio.
X-Access si basa su un’architettura client–server. Il lato client è
costituito da una pagina web all’interno della quale l’utente effettua la
sua richiesta di accesso compilando una form nella quale specifica: i
dati necessari per l’autenticazione (userID e password), il file a cui si
vuole accedere, il tipo di accesso e l’eventuale query sul documento.
Queste informazioni vengono poi spedite al server utilizzando un
javascript. Il lato server è costituito dal database eXcelon e da una
server exstension. Nel database sono memorizzati tutti i documenti XML
e il file dei permessi che contiene le autorizzazioni di accesso dei vari
utenti ai documenti XML. La server exstension è costituita da classi
java che elaborano le informazioni inviate dalla pagina Web e inviano
all’utente il risultato della richiesta di accesso elaborato sulla vista del
documento XML, creata in base alle autorizzazioni memorizzate nei file
dei permessi.
Organizzazione del documento
La tesi si articola in 6 capitoli: nel Capitolo 1 si fa una panoramica di
XML, la sua sintassi e delle tecnologie che si basano su questo
linguaggio; nel Capitolo 2 si illustra lo stato dell’arte della protezione dei
documenti XML; nel Capitolo 3 si presenta in dettaglio il modello per il
controllo degli accessi e la creazione delle viste; il Capitolo 4 presenta
una descrizione dell’architettura e dell’implementazione di X-Access; nel
Capitolo 5 sono illustrati esempi d’uso di X-Access; infine il Capitolo 6 è
dedicato a conclusioni e a possibili sviluppi futuri.
Capitolo 1
XML e tecnologie basate su XML
1.1 I Metalinguaggi
I metalinguaggi di markup di tipo descrittivo offrono rispetto ad HTML
sostanzialmente tre vantaggi:
• L'estensibilità che permette la definizione di set personalizzati di tag,
• La salvaguardia degli elementi strutturali definiti in un file esterno
chiamato Document Type Definition (DTD)
• La validazione per la quale ogni documento passa attraverso un
controllo che ne attesta la conformità alle regole definite nel DTD.
Già SGML offriva questi vantaggi, ma in un ambiente diffuso come
quello del Web questo linguaggio è stato considerato inadeguato a causa
della sua eccessiva complessità che ne poteva frenare la diffusione.
Per questo il World Wide Web Consortium (W3C) ha optato per la
definizione di un linguaggio che, pur mantenendo tutti i vantaggi
descritti sopra, fosse più semplice e quindi più adatto alla varietà di
sviluppatori di documentazione su Internet; così dopo un'attività durata
circa un anno, nel febbraio del 1998 ha rilasciato la versione 1.0 delle
specifiche di XML (eXstensible Markup Language).
XML è quindi un metalinguaggio che può essere usato per descrivere un
vasto insieme di tipi di dati, un insieme di regole, linee guida, e
convenzioni per la descrizione di dati strutturati in forma testuale.
Capitolo 1 - XML e tecnologie basate su XML
- 2 -
Usando il formato testo anziché il formato il formato binario, il
programmatore o l’utente finale può guardare, utilizzare i dati senza
essere strettamente legato al programma che lo produce.
In ogni caso il principale produttore e consumatore di XML è un
programma e non l’utente finale.
Questo linguaggio nasce in pratica per riportare la realizzazione di
documenti per il Web alla normale separazione tra struttura e
rappresentazione dei dati che con il tempo, nella programmazione
HTML, si erano confusi.
Si occupa, infatti, esclusivamente della definizione dei tag da usare e
della loro strutturazione.
Separando la struttura e il contenuto dalla presentazione, lo stesso
sorgente, scritto una sola volta, può essere visualizzato in modi diversi:
scritto su di un monitor come attraverso audio da un cellulare.
Questo vuol dire che un documento scritto secondo queste specifiche
può essere veicolato attraverso dispositivi diversi non necessariamente
presi in considerazione all'atto della sua stesura.
XML quindi, pur essendo nato propriamente per il mondo Web, ha
senso anche fuori da questo, comunque e dovunque qualcuno voglia
produrre un documento, a prescindere dal mezzo trasmissivo.
La divisione corretta fra rappresentazione e struttura ed un suo
controllo formale garantiscono a qualsiasi software che analizzi il
documento, concentrandosi su quest'ultima, non solo di individuare nel
testo eventuali ricorrenze, ma anche di stabilirne la rilevanza in base
alla posizione nella gerarchia testuale.
1.2 Elaborazione di un documento XML
Ad una prima occhiata un documento XML assomiglia vagamente ad un
file HTML, è sempre presente l’idea dei tag che racchiudono una parte
delle informazioni ma le somiglianze terminano qui. XML è testo
Capitolo 1 - XML e tecnologie basate su XML
- 3 -
strutturato in modo che tag e attributi permettano di qualificare ed
identificare specifici frammenti di informazione.
Una volta noto lo schema con cui un documento XML è stato pensato e
poi strutturato dal suo autore, chiunque e su qualunque piattaforma è
in grado di analizzare ed utilizzare tale documento.
A rendere XML multi-piattaforma è la sua natura testuale. Il testo può
essere letto ovunque, una volta chiarito qual è l’insieme di caratteri
utilizzato.
Un’applicazione per leggere un documento XML consta di due parti:
• Parser che esegue il controllo semantico e gestisce gli errori
• Processor che, utilizzando un altro file in cui è definita la
formattazione dei vari tag, visualizza il documento.
Attualmente a parte il mondo WIN32 dove impera COM, negli altri casi i
parser XML sono perlopiù scritti in Java.
Il parser è lo strumento chiave per sfruttare XML: è il modulo o
l’applicazione software in grado di leggere i dati XML e di generare una
qualche forma di output specifica della piattaforma in cui agisce.
Così il parser Win32 tipicamente genererà un modello ad oggetti COM,
mentre un parser scritto in Java per una qualche piattaforma renderà
disponibili le informazioni XML sotto forma di gerarchia di classi o in
altra maniera.
Tra le varie piattaforme, i dati viaggiano esclusivamente in formato testo
(per lo più Ascii), mentre su ciascuna piattaforma i dati stessi sono
elaborati nel modo conforme al tipo di piattaforma stesso.
1.3 Documenti Validi e Well-Formed
I documenti XML si possono classificare in due categorie:
Ben Formati o well-formed e Validi o valid.
In particolare per essere well-formed:
Capitolo 1 - XML e tecnologie basate su XML
- 4 -
• Ogni nome di tag deve essere sempre scritto allo stesso modo
rispetto al maiuscolo/ minuscolo. Vale a dire:
<OrderHeader></OrderHeader>
va bene mentre
<OrderHeader></ORDERHeader>
non va bene.
• Ogni tag anche se vuoto deve essere chiuso. Volendo si può usare
una notazione abbreviata del tipo <Model/>
• Non è possibile avere due tag sovrapposti tipo <Item><Qty> …
</Item></Qty >
• I valori degli attributi devono essere sempre chiusi tra apici non
importa se singoli o doppi:
<OrderHeader ID="IPEXWS10"
OrderNo="16654"
DateCreated="1999-12-14"> …
</OrderHeader >
in questo caso ID, OrderNo e DateCreated sono gli attributi
mentre “IPEXWS10” , “16654” e “1999-12-14” sono il loro valore.
• Ogni documento XML deve avere sempre esattamente un solo tag
principale che funzioni come radice e che racchiude tutti gli altri.
Nel nostro esempio il tag principale è: <ParagonOrder>
Ogni documento XML per essere tale deve rispettare almeno le regole
appena elencate.
Un secondo livello di validazione è dato dal cosiddetto schema del
documento.
In sostanza Xml non definisce un insieme di tag predefiniti, può quindi
sorgere, soprattutto nello scambio di dati tra fonti diverse, la necessità
delimitare l’insieme di tag validi all’interno di un documento XML.
Capitolo 1 - XML e tecnologie basate su XML
- 5 -
Per delimitare questo insieme all’interno di un documento Xml si ricorre
alla definizione di uno “schema”, che permette i definire una specie di
vocabolario di tag e attributi validi per un certo tipo di documenti XML.
In pratica uno schema limita in modo significativo ed efficace la libertà
che XML lascia ai suoi utilizzatori, aiutando a definire una sorta di
linguaggio a marcatori (markup) per una specifica applicazione.
Per definire i tag, gli attributi e le dipendenze tra essi ad oggi esistono
due possibili strade:
• Document Type Definition (DTD), che è il metodo classico
• Xml Data Schema (XDS), che è il metodo recentemente proposto da
Microsoft.
DTD e XDS funzionalmente sono la stessa cosa e possono essere usati
indifferentemente.
La struttura logica del documento XML è composta da due parti. Una
prima parte, opzionale, chiamata Prologo, ed una seconda che definisce
la struttura dei dati del documento chiamata Document element. Per
ognuna di esse si forniranno nelle prossimi sezioni maggior dettagli.
E’ comunque utile sapere che nel prologo è contenuta una sezione
chiamata: Document Type Declaration. Un documento Xml che indichi
nella Document Type Declaration un DTD o uno Schema deve avere un
contenuto necessariamente conforme ad esso.
Solo in questo caso si può parlare di documento valido.
1.3.1 DTD Vs XDS
Microsoft propone come metodo alternativo ai DTD gli schemi che
intendono essere un modo migliore per definire la validità.
Gli XDS non sono ancora uno standard accettato come i DTD , ma
promettono di esserlo presto dal momento che non presentano molti
degli svantaggi dei DTD e sembrano raccogliere consensi nella comunità
XML il sito www.biztalk.org è il risultato di questi consensi.
Capitolo 1 - XML e tecnologie basate su XML
- 6 -
La potenza di XML sta nella semplificazione rispetto all’SGML da cui
deriva, ma per quanto riguarda la validazione i vecchi DTD dell’SGML
sono stati riciclati in XML senza troppi miglioramenti.
Uno degli svantaggi dei DTD è che: la sintassi non è XML il che vuol
dire imparare una sintassi nuova per definire i DTD.
Inoltre i DTD non offrono grandi possibilità di definire la natura dei dati
marcati da un determinato elemento, infatti mentre un DTD può
garantire, ad esempio, l’esistenza di un elemento DateCreated, non
può controllare che il contenuto sia in effetti una data, e non ad
esempio:
<DateCreated> Giorno di Natale </DateCreated>.
Un altro svantaggio dei DTD è di non offrire meccanismi abbastanza
potenti per la validazione questo perché:
• Non permettono di controllare la semantica
• Sono abbastanza difficili da creare
• Sono abbastanza rigidi specialmente per quanto riguarda
l’introduzione di namespace. Diventa quindi difficile la validazione di
documenti contenenti elementi di diversa provenienza
Gli XDS di Microsoft sono una buona proposta per ovviare alle
limitazioni dei DTD infatti:
• La sintassi degli XDS è XML
• Supportano la definizione di tipi di dato
• Hanno un content model aperto nel senso che possono validare
documenti contenenti elementi provenienti da sorgenti differenti, e
quindi con namespace differenti
Come già detto nonostante le limitazioni, lo standard attuale è
rappresentato dai DTD poiché ci vorrà del tempo prima che gli XDS
sostituiscano i DTD.