La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Web – services Andrea Manconi IASC group DIEE – Department of Electrical and Electronic Engineering

Presentazioni simili


Presentazione sul tema: "Web – services Andrea Manconi IASC group DIEE – Department of Electrical and Electronic Engineering"— Transcript della presentazione:

1 Web – services Andrea Manconi IASC group DIEE – Department of Electrical and Electronic Engineering manconi@diee.unica.it

2 Andrea Manconi Sommario Web services Web services Web application (CGI, FastCGI, ASP, JSP,PHP)‏ Web application (CGI, FastCGI, ASP, JSP,PHP)‏ Servlet vs CGI, FastCGI, ASP, JSP, PHP Servlet vs CGI, FastCGI, ASP, JSP, PHP Servlet – persistenza Servlet – persistenza Servlet – caching Servlet – caching Servlet – contenuto HTML Servlet – contenuto HTML Servlet – sessioni Servlet – sessioni Servlet – sicurezza Servlet – sicurezza Distribuzione di carico Distribuzione di carico

3 Web service

4 Andrea Manconi Web service Per web service si intende un servizio offerto attraverso il web. Esempio: richiesta informazioni prodotto catalogo. Si invia una richiesta ad un dato URL e il servizio risponde fornendo le informazioni richieste. Esempio: richiesta informazioni prodotto catalogo. Si invia una richiesta ad un dato URL e il servizio risponde fornendo le informazioni richieste.

5 Andrea Manconi Web service Web page: statica. Non esiste interazione Web page: statica. Non esiste interazione Web application: dinamica. Interazione con l’utente Web application: dinamica. Interazione con l’utente

6 Web application

7 Andrea Manconi Web application CGI CGI FastCGI FastCGI ASP ASP JSP JSP PHP PHP Java Servlet Java Servlet

8 Andrea Manconi Web application - CGI Common Gateway Interface Una delle prime tecnologie utilizzate Una delle prime tecnologie utilizzate Nata per definire un metodo standard per la comunicazione tra un server di informazioni e applicazioni esterne Nata per definire un metodo standard per la comunicazione tra un server di informazioni e applicazioni esterne Ciclo di vita: pessimo, un nuovo processo per ogni richiesta (tempo e risorse del server)‏ Ciclo di vita: pessimo, un nuovo processo per ogni richiesta (tempo e risorse del server)‏

9 Andrea Manconi Web application - CGI Vantaggi Vantaggi Semplice da scrivere Semplice da scrivere Portabilità Portabilità Supporta molti linguaggi: es. C, Perl Supporta molti linguaggi: es. C, Perl

10 Andrea Manconi Web application - CGI Svantaggi Svantaggi Prestazioni limitate Prestazioni limitate Impossibilità di interazione con il server web a causa dei processi separati (es. non è possibile scrivere sul file log del server)‏ Impossibilità di interazione con il server web a causa dei processi separati (es. non è possibile scrivere sul file log del server)‏

11 Andrea Manconi Web application - CGI HelloWorld.cgi (Perl)‏ #!/usr/bin/perl $t = "Hello World!"; print <<EOT; Content-type: text/html $t $t EOT EOT

12 Andrea Manconi Web application - FastCGI FastCGI Sviluppata da Open Market Sviluppata da Open Market Elimina la necessità di creare un nuovo processo per ogni richiesta pervenuta Elimina la necessità di creare un nuovo processo per ogni richiesta pervenuta Tuttavia è necessario attivare almeno un processo per ogni programma FastCGI Tuttavia è necessario attivare almeno un processo per ogni programma FastCGI

13 Andrea Manconi Web application - FastCGI Vantaggi Vantaggi Semplice Semplice Facile migrare da applicazioni CGI ad applicazioni FastCGI Facile migrare da applicazioni CGI ad applicazioni FastCGI Alte performance (rispetto a CGI)‏ Alte performance (rispetto a CGI)‏ Molti linguaggi supportati Molti linguaggi supportati

14 Andrea Manconi Web application - FastCGI Svantaggi Svantaggi è necessario attivare almeno un processo per ogni programma FastCGI, se un programma FastCGI deve gestire richieste concorrenti saranno attivati più processi è necessario attivare almeno un processo per ogni programma FastCGI, se un programma FastCGI deve gestire richieste concorrenti saranno attivati più processi continua a mancare l’interazione con il server continua a mancare l’interazione con il server

15 Andrea Manconi Web application - ASP Active Server Pages Sviluppato da Microsoft Sviluppato da Microsoft Pagina HTML con codice incorporato (in genere VBScript e JScript)‏ Pagina HTML con codice incorporato (in genere VBScript e JScript)‏ Problema: in piattaforma non Windows potrebbero sorgere problemi legati all’assenza della libreria COM di Windows Problema: in piattaforma non Windows potrebbero sorgere problemi legati all’assenza della libreria COM di Windows

16 Andrea Manconi Web application - ASP Vantaggi Vantaggi Facile da usare Facile da usare Ottimizzato per piccoli contenuti dinamici Ottimizzato per piccoli contenuti dinamici

17 Andrea Manconi Web application - ASP Svantaggi Svantaggi Portabilità: Portabilità: 1) il supporto ASP è contenuto in Microsoft Internet Information Server 3.0, disponibile gratuitamente, mentre il supporto per altri server web è disponibile come prodotto commerciale 1) il supporto ASP è contenuto in Microsoft Internet Information Server 3.0, disponibile gratuitamente, mentre il supporto per altri server web è disponibile come prodotto commerciale 2) su piattaforme non Windows problemi legati all’assenza della libreria COM 2) su piattaforme non Windows problemi legati all’assenza della libreria COM

18 Andrea Manconi Web application - ASP HelloWorld.asp ">Hello World! ">Hello World!

19 Andrea Manconi Web application - ASP Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World!

20 Andrea Manconi Web application - JSP Java Server Pages Alternativa ad ASP basata su Java Alternativa ad ASP basata su Java Sviluppata da SUN Sviluppata da SUN Forte legame con le servlet Forte legame con le servlet

21 Andrea Manconi Web application - JSP Vantaggi Vantaggi Standard: implementato da moltissimi produttori su tutte le piattaforme Standard: implementato da moltissimi produttori su tutte le piattaforme Semplice passare da ASP a JSP per chi conosce JAVA Semplice passare da ASP a JSP per chi conosce JAVA

22 Andrea Manconi Web application - JSP Svantaggi Svantaggi Un solo linguaggio di script: JAVA Un solo linguaggio di script: JAVA Ottimizzato per piccoli contenuti dinamici Ottimizzato per piccoli contenuti dinamici

23 Andrea Manconi Web application - JSP HelloWorld.jsp<HTML> Hello World! The time is now Hello World! The time is now </HTML>

24 Andrea Manconi Web application - PHP È un linguaggio di scripting open-source per la creazione di contenuti dinamici È un linguaggio di scripting open-source per la creazione di contenuti dinamici Il codice PHP viene scritto come codice embedded all’interno delle pagine HTML Il codice PHP viene scritto come codice embedded all’interno delle pagine HTML

25 Andrea Manconi Web application - PHP HelloWorld.php /* void echo ( string arg1 [, string argn...]) */ _________________________________________<html><head> Test PHP Test PHP "; ?> "; ?></body></html>

26 Andrea Manconi Web application - PHP Interfaccia verso i più comuni database (oracle, MySQL …)‏ Interfaccia verso i più comuni database (oracle, MySQL …)‏ Sintassi simile a quella del C e di Perl Sintassi simile a quella del C e di Perl Cross-platform compatibility: significa che gli script PHP sono supportati da tutti gli Internet servers Cross-platform compatibility: significa che gli script PHP sono supportati da tutti gli Internet servers

27 Andrea Manconi Web application - PHP Vantaggi: Vantaggi: Open – source !!! Open – source !!! Non è proprietario, e quindi non è ristretto a determinate piattaforme Non è proprietario, e quindi non è ristretto a determinate piattaforme Facile da utilizzare Facile da utilizzare

28 Andrea Manconi Web application - PHP Svantaggi Svantaggi Forte consumo di memoria da parte dell’interprete (variabili non necessariamente dichiarate)‏ Forte consumo di memoria da parte dell’interprete (variabili non necessariamente dichiarate)‏

29 Andrea Manconi Web application - Servlet Servlet E’ pensabile come ad una estensione che è possibile collegare ad un server al fine di migliorarne ed estenderne le funzionalità. E’ pensabile come ad una estensione che è possibile collegare ad un server al fine di migliorarne ed estenderne le funzionalità. L’esecuzione avviene all’interno di una JVM e pertanto è sicura e portabile L’esecuzione avviene all’interno di una JVM e pertanto è sicura e portabile

30 Andrea Manconi Web application - Servlet Tutte le servlet vengono gestite da thread separati all’interno dello stesso processo Tutte le servlet vengono gestite da thread separati all’interno dello stesso processo Portabilità: sia rispetto ai sistemi operativi, sia verso i server web Portabilità: sia rispetto ai sistemi operativi, sia verso i server web

31 Andrea Manconi Web application - Servlet Le servlet operano all’interno del dominio del server, pertanto a differenza delle applet non richiedono che il browser supporti JAVA Le servlet operano all’interno del dominio del server, pertanto a differenza delle applet non richiedono che il browser supporti JAVA

32 Andrea Manconi Servlet vs CGI Servlet sono una soluzione Sun alle CGI Servlet sono una soluzione Sun alle CGI Entrambi generano contenuti dinamici Entrambi generano contenuti dinamici Le Servlet sono sicure Le Servlet sono sicure Le Servlet sono indipendenti dalla piattaforma Le Servlet sono indipendenti dalla piattaforma Le Servlet hanno un migliore supporto per i componenti riusabili Le Servlet hanno un migliore supporto per i componenti riusabili

33 Andrea Manconi Servlet vs CGI Servlet: vantaggi Servlet: vantaggi associate a thread del web server, non a processi separati associate a thread del web server, non a processi separati Servlet: svantaggi Servlet: svantaggi Possono essere scritte esclusivamente in Java Possono essere scritte esclusivamente in Java

34 Andrea Manconi Servlet vs CGI L’esecuzione di una CGI è indipendente dalle altre. La comunicazione tra diverse istanze è complessa L’esecuzione di una CGI è indipendente dalle altre. La comunicazione tra diverse istanze è complessa Una servlet è sempre in esecuzione e la comunicazione tra i vari thread è semplificata Una servlet è sempre in esecuzione e la comunicazione tra i vari thread è semplificata Un processo per ogni richiesta. Ad n richieste n copie dell’applicazione in memoria Un processo per ogni richiesta. Ad n richieste n copie dell’applicazione in memoria

35 Andrea Manconi Servlet vs CGI MediaMolto altaIndipendenza dalla piattaforma BassaAltaEfficienza di esecuzione Media Creazione CGI ScriptsServlet

36 Andrea Manconi Servlet vs FastCGI Servlet: gestione semplificata delle sessioni Servlet: gestione semplificata delle sessioni FastCGI: possibilità di scelta tra più linguaggi FastCGI: possibilità di scelta tra più linguaggi Servlet: PORTABILITA’ Servlet: PORTABILITA’

37 Andrea Manconi Servlet vs ASP Le Servlet sono portabili verso Le Servlet sono portabili verso altri sistemi operativi altri sistemi operativi web server web server Le Servlet sono più potenti per applicazioni complesse Le Servlet sono più potenti per applicazioni complesse Migliore supporto per componenti riusabili Migliore supporto per componenti riusabili

38 Andrea Manconi Servlet vs JSP Esiste una forte relazione tra le servlet e JSP Servlet: codice JAVA che legge e scrive HTML Servlet: codice JAVA che legge e scrive HTML JSP: HTML con codice JAVA embedded JSP: HTML con codice JAVA embedded

39 Andrea Manconi Servlet vs PHP Java è ottimo per progetti complessi Java è ottimo per progetti complessi Librerie Librerie PHP utilizza i cookie ma non ha una gestione delle sessioni PHP utilizza i cookie ma non ha una gestione delle sessioni

40 Andrea Manconi Web server WebSphere (IBM)‏ WebSphere (IBM)‏ http://www-3.ibm.com/software/info1/websphere/index.jsp http://www-3.ibm.com/software/info1/websphere/index.jsp http://www-3.ibm.com/software/info1/websphere/index.jsp WebLogic (BEA)‏ WebLogic (BEA)‏ http://www.bea.com http://www.bea.com http://www.bea.com 9i Application Server (Oracle)‏ 9i Application Server (Oracle)‏ http://www.oracle.com/ip/deploy/ias/ http://www.oracle.com/ip/deploy/ias/ http://www.oracle.com/ip/deploy/ias/ Jrun (Allaire) Jrun (Allaire) www.allaire.com/products/jrun www.allaire.com/products/jrun www.allaire.com/products/jrun Sun Java Web Server Sun Java Web Server www.sun.com/software/jwebserver/try www.sun.com/software/jwebserver/try www.sun.com/software/jwebserver/try Tomcat (Apache)‏ Tomcat (Apache)‏ http://jakarta.apache.org http://jakarta.apache.org http://jakarta.apache.org

41 Servlet

42 Andrea Manconi J2EE J2EE raccoglie diverse API lato server J2EE raccoglie diverse API lato server Servlet API Servlet API JSP JSP EJB EJB JavaMail JavaMail JMS (Java Messaging Service)‏ JMS (Java Messaging Service)‏ JTA (Java Transactions)‏ JTA (Java Transactions)‏ Corba Corba JDBC JDBC JAXP (Java API for XML Parsing)‏ JAXP (Java API for XML Parsing)‏ JNDI (Java Naming and Directory Interface)‏ JNDI (Java Naming and Directory Interface)‏

43 Persistenza

44 Andrea Manconi Persistenza Nel momento in cui il codice di una servlet viene caricato, il server crea una singola istanza, per gestire tutte le richieste. Nel momento in cui il codice di una servlet viene caricato, il server crea una singola istanza, per gestire tutte le richieste.

45 Andrea Manconi Persistenza Vantaggi: Vantaggi: Ridotto consumo di memoria Ridotto consumo di memoria Riduzione del carico di lavoro, altrimenti necessario per creare un nuovo oggetto ad ogni richiesta Riduzione del carico di lavoro, altrimenti necessario per creare un nuovo oggetto ad ogni richiesta Permette la persistenza Permette la persistenza

46 Andrea Manconi Persistenza Cosa si intende per persistenza ? Cosa si intende per persistenza ? Le web application fanno in genere riferimento ad un db. Si immagini cosa significa stabilire una connessione al db per ogni richiesta che viene effettuata. È evidente il vantaggio della persistenza della connessione con una singolo istanza della servlet che gestisce la connessione.

47 Andrea Manconi Persistenza import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SimpleCounter extends HttpServlet { int count = 0; int count = 0; public void doGet(HttpServletRequest req, HttpServletResponse res)‏ public void doGet(HttpServletRequest req, HttpServletResponse res)‏ throws ServletException, IOException { throws ServletException, IOException { res.setContentType("text/plain"); res.setContentType("text/plain"); PrintWriter out = res.getWriter(); PrintWriter out = res.getWriter(); count++; count++; out.println(“Numero di accessi: " + count); out.println(“Numero di accessi: " + count); }}

48 Andrea Manconi Persistenza Problema: Problema: se si utilizzano variabili locali non esistono problemi di interazione tra i thread, ma se si utilizzano variabili non locali …

49 Andrea Manconi Persistenza Si consideri contatore mostrato in precedenza, cosa accade se due utenti accedono alla servlet quasi contemporaneamente ? Si consideri contatore mostrato in precedenza, cosa accade se due utenti accedono alla servlet quasi contemporaneamente ? Entrambi i thread saranno colpevoli di incrementare lo stesso valore del contatore, mostrando a video lo stesso risultato.

50 Andrea Manconi Persistenza Il problema è dovuto alla necessità di sincronizzare l’utilizzo della variabile count, in modo che un thread alla volta possa operare su essa. Il problema è dovuto alla necessità di sincronizzare l’utilizzo della variabile count, in modo che un thread alla volta possa operare su essa. In java questo viene fatto utilizzando la parola chiave synchronized In java questo viene fatto utilizzando la parola chiave synchronized

51 Andrea Manconi Persistenza Possibili soluzioni: public syncronized void doGet(HttpServletRequest req, HttpServletResponse res) …

52 Andrea Manconi Persistenza Un’altra soluzione … PrintWriter out = res.getWriter(); syncronized(this) { count++; out.println(“Numero di accessi” + count); }

53 Andrea Manconi Persistenza Problematiche legate: Problematiche legate: L’utilizzo della sincronizzazione (monitor) implica un carico elevato L’utilizzo della sincronizzazione (monitor) implica un carico elevato Nel periodo in cui un thread esegue un blocco syncronized gli altri thread possono essere bloccati in attesa del rilascio delle risorse !!! Nel periodo in cui un thread esegue un blocco syncronized gli altri thread possono essere bloccati in attesa del rilascio delle risorse !!!

54 Andrea Manconi Persistenza Altre problematiche: cosa accade se il server “cade”, oppure se per qualche motivo è necessario ricaricare la servlet ?

55 Andrea Manconi Persistenza … il contatore inizia a contare da zero

56 Andrea Manconi Persistenza Metodi init() e destroy()‏ Metodi init() e destroy()‏ il metodo init() definisce le operazioni di inizializzazione della servlet, quelle che devono essere effettuate al momento del suo caricamento, mentre il metodo destroy() implementa le operazioni per la distruzione della servlet.

57 Andrea Manconi Persistenza Con l’utilizzo di questi due metodi, il problema del contatore può essere risolto facilmente interfacciandoci con un db o con l’utilizzo di un file. init(): inizializzazione del contatore a zero al primo accesso in assoluto o lettura del suo valore da file o db destroy(): memorizzazione del nuovo valore del contatore

58 Andrea Manconi Persistenza Singolo thread Singolo thread Esiste la possibilità di caricare per una servlet un pool di istanze. Non tutti i server permettono di fare questo. Esiste la possibilità di caricare per una servlet un pool di istanze. Non tutti i server permettono di fare questo. È necessario che la servlet implementi l’interfaccia javax.servlet.SingleThreadModel (è un’interfaccia vuota !!!)‏ È necessario che la servlet implementi l’interfaccia javax.servlet.SingleThreadModel (è un’interfaccia vuota !!!)‏

59 Caching

60 Andrea Manconi Caching Molti browser per ridurre il tempo di acceso ad una pagina web accedono alla loro copia in cache. Molti browser per ridurre il tempo di acceso ad una pagina web accedono alla loro copia in cache. Dal punto di vista delle web-application questo “vantaggio” può essere un grosso problema !!! Infatti si scontra con l’histrory del client.

61 Andrea Manconi Caching Si pensi ad un sistema di e-commerce in cui esistono due pagine, una pagina che mostra il carrello e una pagina dei prodotti in catalogo. Se ogni volta che l’utente carica un nuovo prodotto nel carrello il browser ricarica la sua copia nella cache della pagina che mostra il carrello, invece di inoltrare la richiesta al web server, l’utente non avrà visione di quello che decide di acquistare

62 Andrea Manconi Caching La maggior parte dei server web, restituisce, ad ogni richiesta, un intestazione LastModified : Sun, 07-Jul-1974 01:10:00 GMT Lato browser web, viene inclusa nella propria richiesta un’intestazione identica IfModifiedSince.

63 Andrea Manconi Caching Dallo scambio di queste informazioni il server decide se re-inviare una pagina più recente oppure no. In quest’ultimo caso: codice di stato 304 Not Modified

64 Andrea Manconi Caching Nel caso di contenuto dinamico (servlet) è cosa buona e giusta che il server assuma che il contenuto cambi in continuazione. Questo implica lo svantaggio di dovere effettivamente ricaricare le pagine dinamiche lato client, e carico di lavoro lato server, ma previene da eventuali malfunzionamenti !!!

65 Andrea Manconi Caching Per impostare il ricaricamento delle pagine, la servlet può implementare il metodo protected long getLastModified(HttpServletRequest)‏ Il server interroga questo metodo per scoprire quando è stata l’ultima volta che la servlet ha modificato il suo output.

66 Contenuto HTML

67 Andrea Manconi Contenuto HTML Principalmente una servlet scrive codice HTML dinamico. Una servlet contiene “HTML embedded” !!!

68 Andrea Manconi Contenuto HTML private void privateArea ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ private void privateArea ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ String sqlCommand; String sqlCommand; PrintWriter out = response.getWriter(); PrintWriter out = response.getWriter(); try{ try{ sqlCommand = "SELECT * FROM shop ORDER BY shopid"; sqlCommand = "SELECT * FROM shop ORDER BY shopid"; acs.rs = acs.stmt.executeQuery(sqlCommand); acs.rs = acs.stmt.executeQuery(sqlCommand); out.println("<HTML"+ out.println("<HTML"+ " Comune di Sestu - E-commerce - Sestu 2010 \n"+ " Comune di Sestu - E-commerce - Sestu 2010 \n"+ " \n"+ " \n"+ " Area Privata. Solo autorizzati\n"+ " Area Privata. Solo autorizzati\n"+ " \n"+ " \n"+

69 Andrea Manconi Acquisire contenuto dai form In una web application spesso risulta necessario acquisire informazioni dall’utente. Si pensi al classico servizio di registrazione utente.

70 Andrea Manconi Acquisire contenuto dai form " \n"+ " \n"+ " \n"+ " Compila il modulo di registrazione \n"+ " Compila il modulo di registrazione \n"+ " \n"+ " \n"+ " User name: \n"+ " User name: \n"+ " \n"+ " \n"+ " Password: \n"+ " Password: \n"+ " \n"+ " \n"+ " \n"+ " Ridigitare la password: \n"+ " \n"+ " Ridigitare la password: \n"+ " \n"+ " \n"+ " Nome: \n"+ " Nome: \n"+ " \n"+ " \n"+

71 Andrea Manconi Acquisire contenuto dai form public String getParameter(String name)‏ String il metodo permette di acquisire i valori associati al campo del form individuato dal parametro “name”. Il metodo è definito dall’interfaccia javax.servlet.ServletRequest ed è ereditato da javax.servlet.HttpServletRequest ServletRequest

72 Andrea Manconi Acquisire contenuto dai form sqlCommand = "INSERT INTO custinfo VALUES “+ "('"+request.getParameter("userid")+ "',MD5('"+request.getParameter("newpswid")+"'), '“+request.getParameter("firstname")+"'"+

73 Session tracking

74 Andrea Manconi Session tracking HTTP: è stateless, cioè non permette la memorizzazione di una sequenza di richieste, o meglio non permette di associare questa sequenza ad un dato utente. HTTP: è stateless, cioè non permette la memorizzazione di una sequenza di richieste, o meglio non permette di associare questa sequenza ad un dato utente.

75 Andrea Manconi Session tracking Esempio: si pensi all’applicazione e- commerce. E’ necessario memorizzare lo stato per “ricordare” l’history dell’utente !!!! Esempio: si pensi all’applicazione e- commerce. E’ necessario memorizzare lo stato per “ricordare” l’history dell’utente !!!!

76 Andrea Manconi Session tracking Autenticazione utente: processo che porta a riconoscere un client tramite user name e una password, con l’aiuto del metodo String getRemoteUser() metodo definito nella classe HttpServletRequest E’ possibile dare l’accesso ad alcune risorse solo a utenti identificati da user name e password noti.

77 Andrea Manconi Session tracking Vantaggi Vantaggi Facile da realizzare Facile da realizzare Indipendente dalla macchina dalla quale si connette Indipendente dalla macchina dalla quale si connette Svantaggi Svantaggi Registrazione obbligatoria Registrazione obbligatoria Login obbligatorio Login obbligatorio Logout solo disconnettendosi dal browser Logout solo disconnettendosi dal browser

78 Andrea Manconi Session tracking Cookie: è un’informazione inviata al browser da un server web. Quando riceve un cookie lo salva e poi lo rinvia al server ogni volta che accede a una pagina su di esso.

79 Andrea Manconi Session tracking Un cookie ha un nome, un valore, e alcuni attributi facoltativi come una descrizione, una data di scadenza, un numero di versione e così via.

80 Andrea Manconi Session tracking I cookie vengono ritrasmessi verso il server HTTP ogni volta che: il cookie non è scaduto il cookie non è scaduto il dominio che interroghiamo è il dominio di persistenza del cookie il dominio che interroghiamo è il dominio di persistenza del cookie

81 Andrea Manconi Session tracking Limitazioni: i browser accettano 20 cookie per sito 20 cookie per sito 300 cookie per utente 300 cookie per utente 4096 byte per cookie 4096 byte per cookie

82 Andrea Manconi Session tracking Le servlet API definiscono la classe javax.servlet.http.Cookie per la gestione dei cookie Le servlet API definiscono la classe javax.servlet.http.Cookie per la gestione dei cookie Una servlet recupera tutti i cookie che ha inviato attraverso il metodo Una servlet recupera tutti i cookie che ha inviato attraverso il metodo public Cookie[] HttpServletRequest.getCookies()‏

83 Andrea Manconi Session tracking Per default i cookie sono restituiti solo all’host che li ha salvati Per default i cookie sono restituiti solo all’host che li ha salvati È possibile impostare la scadenza per un cookie utilizzando il metodo È possibile impostare la scadenza per un cookie utilizzando il metodo public void Cookie.setMaxAge(int expiry)‏

84 Andrea Manconi Session tracking Vantaggi Vantaggi Anonimo e trasparente Anonimo e trasparente Svantaggi Svantaggi Fortemente legato alla macchina, i cookie sono memorizzati su disco !!! Fortemente legato alla macchina, i cookie sono memorizzati su disco !!! Il browser può non supportare i cookie Il browser può non supportare i cookie

85 Andrea Manconi Session tracking Servlet Session Tracking Quando un utente accede ad una web application gli viene assegnato un ID unico di sessione Quando un utente accede ad una web application gli viene assegnato un ID unico di sessione L’ID di sessione viene salvato sul client in un cookie chiamato JSESSIONID. Se il client non supporta i cookie, l’ID di sessione viene inviato come parte di un URL modificato. L’ID di sessione viene salvato sul client in un cookie chiamato JSESSIONID. Se il client non supporta i cookie, l’ID di sessione viene inviato come parte di un URL modificato. La session può essere invalidata con la chiusura del browser o impostando un timeout per la sessione. La session può essere invalidata con la chiusura del browser o impostando un timeout per la sessione.

86 Andrea Manconi Session tracking Un’HttpSession è ottenibile tramite la HttpServletRequest public void doPost(HttpServletRequest req,HttpServletResponse res) { …. HttpSession session = req.getSession(true); }

87 Andrea Manconi Session tracking Per la gestione degli oggetti public voi setAttribute(String name, Object value)‏ public Object getAttribute(String name)‏ public void removeAttribute(String name)‏

88 Sicurezza

89 Andrea Manconi Sicurezza Autenticazione: Autenticazione: identificare il client Autorizzazione: Autorizzazione: limitare l’accesso alle risorse ad un insieme selezionato di utenti Riservatezza: Riservatezza: garanzia che soltanto le parti coinvolte possano comprendere la comunicazione Integrità: Integrità: garantire che il contenuto della comunicazione non è mutato durante la trasmissione

90 Andrea Manconi Sicurezza Autenticazione HTTP: detta autenticazione di base. Autenticazione HTTP: detta autenticazione di base. Basato su un semplice modello challenge/response – username/password. Il server web mantiene un database di username e password e identifica quali risorse devono essere protette tramite il meccanismo di autenticazione utente.

91 Andrea Manconi Sicurezza – Autenticazione HTTP Codifica Base64 per la trasmissione delle password (facilmente reversibile)‏ Codifica Base64 per la trasmissione delle password (facilmente reversibile)‏ Password scritte in chiaro sul server Password scritte in chiaro sul server

92 Andrea Manconi Sicurezza – Autenticazione HTTP secret secret SalaryServer SalaryServer SecretProtection SecretProtection /servlet/SalaryServer /servlet/SalaryServer /servlet/secret /servlet/secret GET GET POST POST

93 Andrea Manconi Sicurezza – Autenticazione HTTP <auth-constraint> manager manager </auth-constraint> </security-constraint> BASIC BASIC Default Default </realm-name> </login-config> manager manager </security-role>

94 Andrea Manconi Sicurezza – Autenticazione HTTP protegge un elemento in modo da consentire l’accesso solo ai ruoli indicati da. protegge un elemento in modo da consentire l’accesso solo ai ruoli indicati da. Se non è specificata alcuna voce vengono protetti tutti i metodi HTTP. La metodologia di autenticazione è specificata da.

95 Andrea Manconi Sicurezza – Autenticazione HTTP Il file utilizzato per l’autenticazione HTTP Il file utilizzato per l’autenticazione HTTP (con tomcat web server tomcat-users.xml)‏ (con tomcat web server tomcat-users.xml)‏<tomcat-users> </tomcat-users>

96 Andrea Manconi Sicurezza – Autenticazione HTTP Recupero parametri di autenticazione Recupero parametri di autenticazione public String HttpServletRequest.getRemoteUser()‏ /* restituisce il nome dell’utente che effettua la richiesta */ public String HttpServletRequest.getAuthType()‏ /* restituisce il tipo di autorizzazione usata */ public boolean HttpServletRequest.isUserInRole(String role)‏ /* restituisce true solo se l’utente autenticato appartiene al ruolo specificato */

97 Andrea Manconi Sicurezza – Autenticazione basata su modulo A differenza della autenticazione base, permette di entrare nel sito con una pagina di login documentata. A differenza della autenticazione base, permette di entrare nel sito con una pagina di login documentata. Come per l’autenticazione base anche in questo caso le password sono in chiaro sul server e facilmente individuabili. Come per l’autenticazione base anche in questo caso le password sono in chiaro sul server e facilmente individuabili.

98 Andrea Manconi Sicurezza – Autenticazione basata su modulo Vengono impostate due pagine HTML, una per il login corretto e una pagina di errore. Vengono impostate due pagine HTML, una per il login corretto e una pagina di errore. Le pagine sono indicate nel web.xml

99 Andrea Manconi Sicurezza – Autenticazione basata su modulo secret secret SalaryServer SalaryServer SecretProtection SecretProtection /servlet/SalaryServer /servlet/SalaryServer /servlet/secret /servlet/secret GET GET POST POST

100 Andrea Manconi Sicurezza – Autenticazione basata su modulo <auth-constraint> manager manager <login-config> FORM FORM /loginpage.html /loginpage.html /errorpage.html /errorpage.html manager manager

101 Andrea Manconi Sicurezza – Autenticazione personalizzata Sfrutta l’autenticazione HTTP Sfrutta l’autenticazione HTTP Potenzialità: Potenzialità: gestione all’accesso di una servlet (user/password)‏ gestione all’accesso di una servlet (user/password)‏ gestione all’accesso di una risorsa in base alla nazione di appartenenza (vedi embargo)‏ gestione all’accesso di una risorsa in base alla nazione di appartenenza (vedi embargo)‏ gestione dell’accesso ad una risorsa in base all’IP gestione dell’accesso ad una risorsa in base all’IP

102 Andrea Manconi Sicurezza – Autenticazione personalizzata L’autenticazione personalizzata fa in genere riferimento a password memorizzate in scuro su file o database. L’autenticazione personalizzata fa in genere riferimento a password memorizzate in scuro su file o database. In questo caso si aggiungono altri livelli di sicurezza, quello del database, protetto da password, e inoltre si possono utilizzare altri algoritmi di codifica per le passoword utente come l’MD5

103 Andrea Manconi Sicurezza – Autenticazione personalizzata L’MD5 è un algoritmo di codifica a 128 bit. L’MD5 è un algoritmo di codifica a 128 bit. In java può essere utilizzato con l’ausilio del package java.security In java può essere utilizzato con l’ausilio del package java.security

104 Andrea Manconi Sicurezza – Autenticazione personalizzata Molti database, supportano l’MD5 come istruzione da linea di commando. Il vantaggio è quello di eliminare la necessità di scrivere codice JAVA aggiuntivo, alleggerendo il lavoro. Molti database, supportano l’MD5 come istruzione da linea di commando. Il vantaggio è quello di eliminare la necessità di scrivere codice JAVA aggiuntivo, alleggerendo il lavoro.

105 Andrea Manconi Sicurezza – Autenticazione personalizzata Una servlet utilizza i codici di stato HTTP per gestire il proprio criterio di protezione. Per fare questo utilizza le credenziali dell’utente codificate nell’intestazione Authorization. Nel caso le credenziali vengano rifiutate la servlet imposta l’invio del codice di stato SC_UNAUTHORIZED e un’intestazione WWW-Authenticate che descrive le credenziali desiderate. Una servlet utilizza i codici di stato HTTP per gestire il proprio criterio di protezione. Per fare questo utilizza le credenziali dell’utente codificate nell’intestazione Authorization. Nel caso le credenziali vengano rifiutate la servlet imposta l’invio del codice di stato SC_UNAUTHORIZED e un’intestazione WWW-Authenticate che descrive le credenziali desiderate.

106 Andrea Manconi Sicurezza – Autenticazione personalizzata public void doGet(HttpServletRequest req, HttpServletResponse res)‏ throws ServletException, IOException { throws ServletException, IOException { res.setContentType("text/plain"); res.setContentType("text/plain"); PrintWriter out = res.getWriter(); PrintWriter out = res.getWriter(); // Imposta l’header Authorization // Imposta l’header Authorization String auth = req.getHeader("Authorization"); String auth = req.getHeader("Authorization"); // richiama un metodo che si interfaccia con un db per valutare l’autenticazione // richiama un metodo che si interfaccia con un db per valutare l’autenticazione if (!allowUser(auth)) { if (!allowUser(auth)) { // Accesso non permesso, notifica // Accesso non permesso, notifica res.setHeader("WWW-Authenticate", "BASIC realm=\"users\""); res.setHeader("WWW-Authenticate", "BASIC realm=\"users\""); res.sendError(res.SC_UNAUTHORIZED); res.sendError(res.SC_UNAUTHORIZED);} else { else { // Accesso permesso // Accesso permesso out.println(“link to diee www.diee.unica.it "); out.println(“link to diee www.diee.unica.it ");www.diee.unica.it } }

107 Andrea Manconi Sicurezza: Certificati Digitali I certificati digitali offrono un livello di sicurezza superiore I certificati digitali offrono un livello di sicurezza superiore Chiave asimmetrica: esistono due chiavi Chiave asimmetrica: esistono due chiavi Privata Privata Pubblica Pubblica

108 Andrea Manconi Sicurezza: Certificati Digitali Esempio: si consideri il caso in cui due utenti debbano scambiarsi dei messaggi. Identifichiamo i due utenti come A e B Esempio: si consideri il caso in cui due utenti debbano scambiarsi dei messaggi. Identifichiamo i due utenti come A e B

109 Andrea Manconi Sicurezza: Certificati Digitali A codifica il messaggio che deve inviare con la chiave pubblica di B A codifica il messaggio che deve inviare con la chiave pubblica di B B decodifica il messaggio che ha inviato A con la sua chiave privata B decodifica il messaggio che ha inviato A con la sua chiave privata Questo sistema di chiavi è detto asimmetrico perché ogni chiave può decodificare i messaggi codificati con l’altra chiave Questo sistema di chiavi è detto asimmetrico perché ogni chiave può decodificare i messaggi codificati con l’altra chiave

110 Andrea Manconi Sicurezza: Certificati Digitali Problema: questo sistema non risolve il problema dell’autenticazione. L’utente B non ha alcuna certezza che il messaggio che ha ricevuto è stato inviato da A o da un terzo utente C sotto mentite spoglie !!! Problema: questo sistema non risolve il problema dell’autenticazione. L’utente B non ha alcuna certezza che il messaggio che ha ricevuto è stato inviato da A o da un terzo utente C sotto mentite spoglie !!!

111 Andrea Manconi Sicurezza: Certificati Digitali Per risolvere il problema si sfrutta l’asimmetria delle chiavi come segue: A codifica l’informazione con la sua chiave privata, e poi ancora con la chiave pubblica di B A codifica l’informazione con la sua chiave privata, e poi ancora con la chiave pubblica di B B decodifica l’informazione con la sua chiave privata e poi con la chiave pubblica di A, che deve possedere B decodifica l’informazione con la sua chiave privata e poi con la chiave pubblica di A, che deve possedere

112 Andrea Manconi Sicurezza: Certificati Digitali Visto che solo A può codificare i messaggi con la sua chiave privata, l’autenticazione è garantita …. tuttavia permane ancora un problema. La certificazione dell’identità. Cioè come può un utente garantire che è chi dice di essere ? A questo proposito intervengono le autorità di certificazione (es VeriSign, Thawte Consulting, Entrust Technologies)‏ Visto che solo A può codificare i messaggi con la sua chiave privata, l’autenticazione è garantita …. tuttavia permane ancora un problema. La certificazione dell’identità. Cioè come può un utente garantire che è chi dice di essere ? A questo proposito intervengono le autorità di certificazione (es VeriSign, Thawte Consulting, Entrust Technologies)‏

113 Andrea Manconi Sicurezza: Certificati Digitali Lo svantaggio delle chiavi asimmetriche è la potenza di calcolo elevata !!! Lo svantaggio delle chiavi asimmetriche è la potenza di calcolo elevata !!! In genere molti sistemi utilizzano un compromesso tra chiavi simmetriche e asimmetriche. Utilizzano le chiavi asimmetriche per identificarsi reciprocamente poi si scambiano una chiave simmetrica separata per cifrare gli scambi. Chiave basata sulla tecnologia DES (Data Encryption Standard)‏ In genere molti sistemi utilizzano un compromesso tra chiavi simmetriche e asimmetriche. Utilizzano le chiavi asimmetriche per identificarsi reciprocamente poi si scambiano una chiave simmetrica separata per cifrare gli scambi. Chiave basata sulla tecnologia DES (Data Encryption Standard)‏

114 Andrea Manconi SSL SSL: Secure Sockets Layer. SSL: Secure Sockets Layer. Si interpone tra l’HTTP e il TCP/IP Si interpone tra l’HTTP e il TCP/IP Si occupa della sicurezza con il ricorso della crittografia a chiave pubblica per lo scambio di chiavi simmetriche che cifrano la comunicazione client-server. Si occupa della sicurezza con il ricorso della crittografia a chiave pubblica per lo scambio di chiavi simmetriche che cifrano la comunicazione client-server. La tecnologia SSL è stata sviluppata da Netscape La tecnologia SSL è stata sviluppata da Netscape

115 Andrea Manconi SSL Funzionamento: L’utente si connette al sito sicuro SSL. I siti protetti con SSL hanno URL del tipo https://.... (HTTP più SSL)‏ L’utente si connette al sito sicuro SSL. I siti protetti con SSL hanno URL del tipo https://.... (HTTP più SSL)‏ Il server firma la sua chiave pubblica con la sua chiave privata Il server firma la sua chiave pubblica con la sua chiave privata Il browser usa la chiave pubblica del server per verificare che la persona che ha firmato la chiave sia effettivamente il suo proprietario Il browser usa la chiave pubblica del server per verificare che la persona che ha firmato la chiave sia effettivamente il suo proprietario

116 Andrea Manconi SSL Il browser verifica se un’autorità di certificazione fidata ha firmato la chiave. Il browser verifica se un’autorità di certificazione fidata ha firmato la chiave. Se non c’è questo tipo di firma il browser chiede all’utente di accettare o meno la firma. Il client genera una chiave simmetrica che viene cifrata con la chiave pubblica del server e rinviata a quest’ultimo. Il client genera una chiave simmetrica che viene cifrata con la chiave pubblica del server e rinviata a quest’ultimo.

117 Distribuzione di carico

118 Andrea Manconi Distribuzione di carico Problema: Problema: Gestione di siti ad alto traffico Gestione di siti ad alto traffico Soluzione: Soluzione: elaborazione tra più server backend (suddivisione del carico e maggiore affidabilità)‏ elaborazione tra più server backend (suddivisione del carico e maggiore affidabilità)‏

119 Andrea Manconi Distribuzione di carico Vantaggi Vantaggi Maggiore robustezza Maggiore robustezza Prestazioni ottimizzate (più richieste)‏ Prestazioni ottimizzate (più richieste)‏ Svantaggi Svantaggi Regole severe da seguire Regole severe da seguire Risultati apprezzabili solo sotto eccessivo carico Risultati apprezzabili solo sotto eccessivo carico Aumento dei tempi e dei costi di realizzazione Aumento dei tempi e dei costi di realizzazione

120 Andrea Manconi Distribuzione di carico Spesso il costo di un’applicazione distribuita è talmente oneroso che si preferisce spendere a livello di hardware Spesso il costo di un’applicazione distribuita è talmente oneroso che si preferisce spendere a livello di hardware

121 Andrea Manconi Distribuzione di carico Stili di distribuzione No clustering: No clustering: le servlet vengono eseguite su un’unica JVM (Tomcat)‏

122 Andrea Manconi Distribuzione di carico Clustering senza migrazione di sessione Clustering senza migrazione di sessione le servlet di un’applicazione web possono essere eseguite su più macchine, mentre le richieste di sessione sono legate al server backend sul quale sono state inizialmente avviate Svantaggio: crash server => sessioni interrotte

123 Andrea Manconi Distribuzione di carico Clustering con migrazione di sessione Clustering con migrazione di sessione migrazione delle sessioni per migliorare il bilanciamento di carico. Per evitare problemi di concomitanza si garantisce che tutte le richieste che fanno parte di una sessione possono essere gestite solo su un’unica VM alla volta

124 Andrea Manconi Riferimenti http://java.sun.com/webservices/docs/1.0/tutorial/ http://java.sun.com/webservices/docs/1.0/tutorial/ http://java.sun.com/webservices/docs/1.0/tutorial/ http://jakarta.apache.org/ http://jakarta.apache.org/ http://jakarta.apache.org/ http://java.sun.com/j2ee/1.4/docs/api/ http://java.sun.com/j2ee/1.4/docs/api/ http://java.sun.com/j2ee/1.4/docs/api/ http://servlets.com http://servlets.com http://servlets.com http://oreilly.com/catalog/jservlet2 http://oreilly.com/catalog/jservlet2 http://oreilly.com/catalog/jservlet2 http://www.fastcgi.com http://www.fastcgi.com http://www.fastcgi.com http://www.activeserverpages.com http://www.activeserverpages.com http://www.activeserverpages.com http://www.java.sun.com/products/jsp http://www.java.sun.com/products/jsp http://www.java.sun.com/products/jsp http://www.php.net http://www.php.net http://www.php.net


Scaricare ppt "Web – services Andrea Manconi IASC group DIEE – Department of Electrical and Electronic Engineering"

Presentazioni simili


Annunci Google