Table Of ContentAlma Mater Studiorum Universita` di Bologna
·
SCUOLA DI SCIENZE
Corso di Laurea in Informatica Magistrale
Migrazione verso una architettura REST
di un applicativo per l’Inter Library Loan
Tesi di Laurea in Sistemi Distribuiti
Relatore: Presentata da:
Vincenzo Alaia
Chiar.mo Prof.
Alessandro Amoroso
Correlatore:
Dott. Alessandro Tugnoli
II Sessione
Anno Accademico 2012-2013
Ai miei genitori.
What is life?
It is the flash of a firefly in the night.
It is the breath of a buffalo in the wintertime.
It is the little shadow which runs across the grass and loses
itself in the sunset.
(Crowfoot - Indiani d’America)
Indice
Introduzione 1
1 I Servizi Web 5
1.1 Un modello concettuale . . . . . . . . . . . . . . . . . . . . . . 8
1.2 Tecnologie di base . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.1 HTTP - HyperText Transfer Protocol . . . . . . . . . . 12
1.2.2 SOAP - Simple Object Access Protocol . . . . . . . . . 19
1.2.2.1 Messaggio SOAP . . . . . . . . . . . . . . . . 20
1.2.2.2 Vantaggi e svantaggi del protocollo SOAP . . 21
1.2.3 XML - Extensible Markup Language . . . . . . . . . . 23
1.2.4 WSDL - Web Services Description Language . . . . . . 28
1.2.5 UDDI - Universal Discovery Description and Integration 30
1.3 Servizi Web - principali architetture . . . . . . . . . . . . . . . 33
1.3.1 Servizi REST . . . . . . . . . . . . . . . . . . . . . . . 33
1.3.2 Servizi RPC-SOAP . . . . . . . . . . . . . . . . . . . . 34
1.3.3 Servizi Ibridi . . . . . . . . . . . . . . . . . . . . . . . 35
1.4 REST - REpresentational State Transfer . . . . . . . . . . . . 36
1.4.1 Il concetto di risorsa . . . . . . . . . . . . . . . . . . . 39
1.4.2 REST vs SOAP . . . . . . . . . . . . . . . . . . . . . . 42
1.4.3 ROA vs SOA . . . . . . . . . . . . . . . . . . . . . . . 45
2 Autenticazione in Servizi Web 47
2.1 Autenticazione base HTTP . . . . . . . . . . . . . . . . . . . . 48
2.2 Autenticazione Digest. . . . . . . . . . . . . . . . . . . . . . . 50
I
INDICE INDICE
2.3 WS-Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.3.1 WSSE UsernameToken . . . . . . . . . . . . . . . . . . 56
2.4 OAuth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.4.1 Terminologia . . . . . . . . . . . . . . . . . . . . . . . 58
2.4.2 Workflow del protocollo . . . . . . . . . . . . . . . . . 59
2.4.3 Architettura di sicurezza . . . . . . . . . . . . . . . . . 66
3 Analisi dello scenario di riferimento 69
3.0.4 Applicazioni per ILL . . . . . . . . . . . . . . . . . . . 71
3.0.5 Protocolli di comunicazione e Standard di riferimento . 77
3.0.6 Funzionamento e utilizzo dei protocolli . . . . . . . . . 84
3.1 NILDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.1.1 Architettura di riferimento . . . . . . . . . . . . . . . . 87
3.1.2 Funzionamento di NILDE . . . . . . . . . . . . . . . . 91
3.1.3 Analisi dei bisogni . . . . . . . . . . . . . . . . . . . . 92
3.1.4 Analisi dei requisiti . . . . . . . . . . . . . . . . . . . . 93
4 Progettazione e sviluppo servizi REST in NILDE 95
4.1 Descrizione della migrazione . . . . . . . . . . . . . . . . . . . 97
4.2 Framework PHP per servizi web REST . . . . . . . . . . . . . 98
4.3 Sviluppo di un OAuth provider . . . . . . . . . . . . . . . . . 101
4.3.1 Creazione API Key e Secret . . . . . . . . . . . . . . . 102
4.3.2 Configurare gli Endpoints . . . . . . . . . . . . . . . . 103
4.3.2.1 Request Token Endpoint . . . . . . . . . . . . 104
4.3.2.2 User Authorization Endpoint . . . . . . . . . 109
4.3.2.3 Access Token Endpoint . . . . . . . . . . . . 110
4.3.2.4 Protected Resource Endpoint . . . . . . . . . 113
4.4 Progettazione dei servizi REST . . . . . . . . . . . . . . . . . 114
4.4.1 Best Practices . . . . . . . . . . . . . . . . . . . . . . . 120
4.4.1.1 Design delle URI . . . . . . . . . . . . . . . . 120
4.4.1.2 Operazioni SAFE e UNSAFE . . . . . . . . . 121
4.4.1.3 CORS - Cross Origin Resource Sharing . . . . 122
INDICE III
4.5 Progettazione servizi web in NILDE . . . . . . . . . . . . . . . 123
4.5.1 Progettazione di servizi web per l’Utente . . . . . . . . 127
4.5.1.1 Elenco dei riferimenti / richieste . . . . . . . 127
4.5.1.2 Inserimento nuovo riferimento . . . . . . . . . 128
4.5.1.3 Richiedi riferimento . . . . . . . . . . . . . . 130
4.5.1.4 Visualizzazione riferimento / richiesta . . . . 131
4.5.1.5 Visualizzazione profilo utente . . . . . . . . . 132
4.5.1.6 Modifica profilo . . . . . . . . . . . . . . . . . 134
4.5.2 Progettazione di servizi web per la Biblioteca . . . . . 136
4.5.2.1 Anagrafica biblioteche . . . . . . . . . . . . . 136
4.5.2.2 Dati anagrafici di una biblioteca . . . . . . . 137
4.5.2.3 Aggiornamento data sospensione servizio DD
tramite codice ACNP . . . . . . . . . . . . . 138
4.5.2.4 Visualizzazione profilo biblioteca . . . . . . . 140
4.5.2.5 Modifica Profilo biblioteca . . . . . . . . . . . 141
4.6 Sviluppo CORS in NILDE . . . . . . . . . . . . . . . . . . . . 142
4.7 Sviluppo API REST in NILDE . . . . . . . . . . . . . . . . . 144
Conclusioni 149
Bibliografia 153
Elenco delle figure
1.1 Architettura SOA di un Web Service. . . . . . . . . . . . . . . 9
1.2 Tecnologie di base per un Web Service. . . . . . . . . . . . . . 11
1.3 Connessione TCP Client-Server. . . . . . . . . . . . . . . . . . 13
1.4 Esempio di messaggio di richiesta HTTP . . . . . . . . . . . . 15
1.5 Esempio di messaggio di risposta HTTP . . . . . . . . . . . . 16
1.6 Struttura del messaggio SOAP. . . . . . . . . . . . . . . . . . 20
1.7 Integrazione di un Web Service in un’applicazione a partire
dalla sua descrizione. . . . . . . . . . . . . . . . . . . . . . . . 30
1.8 Struttura registrazione UDDI. . . . . . . . . . . . . . . . . . . 31
1.9 Esempio Flickr URI. . . . . . . . . . . . . . . . . . . . . . . . 35
1.10 Elementi di una risorsa. . . . . . . . . . . . . . . . . . . . . . 39
2.1 Specifiche per la sicurezza nei Web Services . . . . . . . . . . 53
2.2 Flusso di autenticazione OAuth. . . . . . . . . . . . . . . . . . 60
2.3 Diagramma di sequenza del flusso OAuth. . . . . . . . . . . . 61
3.1 Architettura e tecnologia ILL SBN. . . . . . . . . . . . . . . . 77
3.2 Esempio utilizzo OpenURL. . . . . . . . . . . . . . . . . . . . 79
3.3 Schema generale della richiesta di un articolo. . . . . . . . . . 84
3.4 Architettura software NILDE 4.0. . . . . . . . . . . . . . . . . 87
3.5 Funzionamento di NILDE. . . . . . . . . . . . . . . . . . . . . 91
4.1 Architettura software NILDE + API. . . . . . . . . . . . . . . 96
4.2 Slim Framewok: Middleware. . . . . . . . . . . . . . . . . . . 100
V
ELENCO DELLE FIGURE ELENCO DELLE FIGURE
4.3 Processo di creazione risorsa RESTful. . . . . . . . . . . . . . 116
Elenco delle tabelle
1.1 Metodi HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2 Codici di stato HTTP. . . . . . . . . . . . . . . . . . . . . . . 17
1.3 GET vs POST. . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4 Match tra metodi HTTP e operazioni CRUD. . . . . . . . . . 38
1.5 Azioni su una risorsa. . . . . . . . . . . . . . . . . . . . . . . . 40
VII
Description:per la risoluzione di questi problemi sono i Web Services, che possono essere definiti come .. Quindi per ogni oggetto (file, immagine, audio, Java Applet) presente nella pagina web richiesta verse tipologie di documenti: materiale antico (monografie a stampa dal XV secolo fino al 1830), materiale