Obiettivi Nel corso del tirocinio svolto presso l’azienda GEISOFT S.r.l. mi è stato commissionato lo sviluppo di un sistema di Single Sign On per la gestione degli accessi e della profilazione degli utenti che accedono ai diversi servizi offerti dall’ente Veneto Lavoro. La funzionalità di Single Sign On (SSO) richiesta dall’ente Veneto Lavoro e sviluppate nel lavoro svolto è oramai un servizio fondamentale nelle grandi aziende che può sostenere la produttività dell'utente finale ed elevare il livello di sicurezza. In un sistema SSO l'utente può accedere a più applicazioni e risorse web attraverso un singolo punto di accesso, inserendo una sola volta le sue credenziali. In questo ambiente, l'amministratore può gestire centralmente i privilegi di accesso degli utenti e la profilazione degli stessi. Il livello di sicurezza è elevato perché l'utente accede alle risorse tramite un unico punto di accesso e si riduce il numero di password che esso deve memorizzare cercando di evitare l’utilizzo di molte password simili e poco sicure per i diversi servizi. Per ottenere l’obiettivo fissato si è pensato di sviluppare il prodotto software a partire da un progetto open source già affidabile e collaudato e integrarlo poi nelle diverse web application con le opportune modifiche per adeguarlo al contesto sistemistico di Veneto Lavoro. Dopo aver valutato diverse soluzioni possibili si è scelto di appoggiarsi al progetto open source Guanxi come librerie di riferimento; l’analisi delle specifiche Guanxi ha avuto, naturalmente, un ampio spazio nel lavoro svolto per ottenere l’obiettivo di questa tesi. Il progetto Guanxi è stato sviluppato con la tecnologia Java perciò si è reso necessario lo sviluppo di componenti software che permettono di interfacciare le componenti standard, già fornite con il progetto, con i repository utente di Veneto Lavoro. La prima parte del lavoro di sviluppo software quindi si integra con lo studio di installazione e corretta configurazione delle diverse componenti di un sistema di Single Sign On secondo le specifiche Guanxi. Tali componenti si dividono in due gruppi: quelle comuni a tutto il sistema (Guanxi_wayf, SamlEngine e IdentityProvider) e quelle integrate nelle singole web application (Guard) che dovranno usufruire del sistema di autenticazione. Nel corso del progetto si è deciso di adottare solamente strumenti free per offrire una soluzione completamente riusabile dalla pubblica amministrazione e senza oneri aggiuntivi legati ai costi delle licenze dei prodotti. Questo orientamento ha portato alla scelta di sfruttare, ove possibile, le potenzialità offerte dall’application server JBoss e dal web server Apache. L’importanza della continuità nell’offerta di alcuni servizi da parte di Veneto Lavoro, sanciti anche da obblighi legali, ha portato alla scelta di creare un cluster di server JBoss di modo da offrire un sistema ad alta affidabilità agli utenti registrati (nella maggior parte dei casi istituti scuolastici o studi di consulenza del lavoro). Sono stati replicati sia i server dove risiedono le componenti comuni al sistema SSO sia i server relativi a singoli servizi che necessitano di una continuità nel servizio come AROF e CO-Veneto. L’introduzione del concetto di cluster nel servizio di Single Sign On ha portato all’analisi del supporto di questa soluzione sistemistica da parte delle librerie del progetto Guanxi. Appurato che le librerie di progetto non prevedevano questa possibilità si è avviata una seconda parte dello sviluppo software che prevedeva la modifica di parte delle librerie standard Guanxi per introdurre questa nuova funzionalità necessaria al raggiungimento delle caratteristiche tecniche necessarie nello sviluppo del progetto SSO per l’ente Veneto Lavoro. Il lavoro svolto Il presente studio, che vuole analizzare e illustrare il contesto, l’ambiente e le tecnologie di sviluppo, nonché il lavoro stesso, si può suddividere in quattro sezioni principali. La prima, offre un’introduzione al contesto in cui viene collocarsi il progetto stesso, descrivendo in maniera generale in cosa consista il lavoro svolto e l’azienda in cui tale progetto si è inserito. In questo modo si potrà avere una visione più chiara delle problematiche che andremo ad affrontare nel seguito del lavoro e del contesto della pubblica amministrazione nella quale il sistema dovrà integrarsi. Nella seconda parte si vuole dare una panoramica delle tecnologie utilizzate durante la fase di sviluppo: si inizierà con una breve introduzione ai sistemi Single Sign On e, in particolare, alle specifiche del framework Shibbolet. La panoramica sulle tecnologie utilizzate prosegue con un breve accenno allo standard SAML su cui si basa la soluzione sviluppata in questo documento. Un altro capitolo sarà riservato all’analisi approfondita del progetto opensource Guanxi che è stato adottato come progetto per lo sviluppo del sistema di Single Sign On di Veneto Lavoro. La terza sezione è destinata alla descrizione dettagliata del progetto in tutte le sue fasi di analisi, configurazione, deploy e sviluppo delle funzionalità. Per poter seguire meglio le diverse tematiche si è deciso di suddividere questa parte in tre capitoli distinti. Nel primo capitolo si andrà ad evidenziare lo schema sistemistico base del progetto di modo da comprendere le diverse configurazioni e le interazioni tra le componenti del sistema. Nel capitolo successivo si passa al modello reale della soluzione Single Sign On evidenziando i problemi relativi alla clusterizzazione e le modifiche apportate al progetto originale per poter aggiungere le nuove funzionalità. Chiude un capitolo relativo alla sicurezza informatica del sistema, analisi che non può essere trascurata in un progetto di Identity Management in cui si manipolano i dati sensibili degli utenti. La quarta ed ultima parte del presente documento riporta i risultati prestazionali ottenuti e accenna alla descrizione dei possibili sviluppi futuri di un progetto di così ampio respiro quale quello presentato. Sviluppi che possono presentarsi con diverse modalità viste le possibilità offerte dal sistema e dagli sviluppi che l’ente Veneto Lavoro vuole apportare nei suoi sistemi per migliorare ulteriormente i suoi ottimi servizi di e-Government. Veneto Lavoro Veneto Lavoro è l’Ente strumentale della Regione Veneto per le politiche dell’occupazione. Istituito dalla legge regionale n. 31/98 “disciplina delle politiche del lavoro e dei servizi all'impiego” è dotato di autonomia organizzativa, amministrativa, contabile e patrimoniale. Dal gennaio 2000, l’Ente svolge funzioni ed attività secondo le linee strategiche e gli obiettivi previsti dalla programmazione regionale ed in coordinamento con le Province, il Comitato di Coordinamento Istituzionale e la Commissione Regionale per la Concertazione tra le Parti Sociali. Come organo tecnico e strumentale, Veneto Lavoro dà supporto alle istituzioni e agli altri organismi, assicurando qualificati servizi in tema di programmazione, gestione e valutazione delle politiche del lavoro. Si propone, inoltre, di assicurare alle istituzioni e alla società gli strumenti e l'assistenza specializzata per conoscere, studiare e promuovere le azioni di politiche attive del lavoro, monitorare l'andamento del mercato del lavoro, implementare il Sistema Informativo del Lavoro veneto e sviluppare progetti innovativi sia nel contesto del mercato comunitario allargato sia nella direzione di semplificazione e trasparenza dei rapporti con cittadini e imprese. L'ente è diviso in 4 aree funzionali: Progetti speciali L'attività dell'area relativi ai progetti speciali può essere ripartita in tre ambiti d'azione: - Network Europei per il Lavoro: sviluppo di partenariato ed assistenza tecnica sui mercati del lavoro transnazionali, mira allo sviluppo di network europei nell’ambito del lavoro - Mobilità Internazionale del Lavoro e Flussi Migratori: gestione dei flussi migratori e delle politiche per la migrazione economica relativa alla mobilità internazionale - Servizi & Strumenti: la fornitura di servizi di progettazione e gestionali ad altri organismi regionali titolari di propri progetti. Politiche del Lavoro L'area Politiche del Lavoro ha quale sua principale funzione lo svolgimento delle attività di assistenza tecnica in materia di Servizi per l'Impiego e la gestione di programmi e misure di politica del lavoro. Su questa base si possono individuare tre linee principali d’intervento: - supporto alla Regione del Veneto e agli organismi interistituzionali e di concertazione nella messa a punto di politiche del lavoro regionali e nel loro coordinamento con gli indirizzi nazionali - supporto tecnico al sistema dei Servizi per l'impiego relativamente all'implementazione e sviluppo dell'insieme di servizi previsti nel Masterplan regionale, in un'ottica di coerenza generale dei servizi offerti sul territorio regionale - promozione e realizzazione di programmi sperimentali coerenti agli indirizzi definiti dalla programmazione regionale e gestione segmenti di intervento di politica del lavoro relativamente alle indicazioni definite nelle sedi di coordinamento istituzionale. Osservatorio e Ricerca L’osservatorio, utilizzando ampiamente sia i dati statistici ufficiali sia i dati amministrativi, scava soprattutto sulle caratteristiche che va assumendo la crescita continua degli occupati, analizzandone in dettaglio la dinamica settoriale, professionale e contrattuale nonché la composizione anagrafica. L'analisi è arricchita e completata da specifici approfondimenti dedicati all'impatto delle delocalizzazioni, alle tematiche relative all'occupazione femminile e ad un monitoraggio di lungo periodo delle politiche di sostegno e di riallocazione dei lavoratori licenziati dalle imprese a seguito di crisi aziendali. Sistema Informativo Lavoro Regionale SILR (Sistema Informativo Lavoro Regionale) è la divisione di Veneto Lavoro cui è demandata la progettazione, messa in esercizio, manutenzione e conduzione delle applicazioni software. I servizi gestiti dal SILR sono: -CO Veneto: Applicativo per le aziende, i consulenti del lavoro, le associazioni di categoria e gli altri soggetti abilitati per la trasmissione telematica delle comunicazioni obbligatorie sui rapporti di lavoro -SIL locale: Sistema Informativo per la gestione del backoffice dei Centri per l’Impiego -AROF: Applicativo per le scuole, gli enti di formazione, le Province e la Regione del Veneto per la gestione dell’obbligo scolastico -Borsa Continua Nazionale del Lavoro(BCNL): Sistema regionale e nazionale di Incontro Domanda Offerta -Portale Web: Portale dell'occupazione (www.venetolavoro.it) ideato come strumento per fornire servizi e contenuti editoriali per quanto concerne il mercato del lavoro regionale -Adempimenti On Line: Applicativo, ormai obsoleto, per la trasmissione telematica delle comunicazioni obbligatorie sui rapporti di lavoro; sostituito da "CO Veneto" rimane in uso solo per la consultazione delle vecchie pratiche -Pegaso: Software per la gestione dei disabili ai sensi della L.68/99 da parte degli operatori dei Centri per l'Impiego; attualmente i prospetti informativi telematici vengono inviati dalle aziende attraverso il software "CO Veneto" -Apprendiveneto: Software nell’apprendistato per la gestione della formazione -Borsino professioni: Progetto sperimentale legato alla Borsa Continua Nazionale del Lavoro. Nel "Borsino" sono disponibili informazioni sui profili professionali e sulle loro relazioni con i titoli di studio. Il suo utilizzo è utile sia per supportare le scelte professionali dei giovani che per facilitare i processi d’incontro tra domanda ed offerta di lavoro. Situazione precedente al progetto I diversi sistemi relativi ai servizi del Sistema Informativo Lavoro Regionale prima della creazione di un servizio di SSO erano molto eterogenei e con sistemi di autenticazione implementati dalle singole applicazioni. Alcuni servizi, come il portale web pubblico, non necessitavano di aree riservate mentre altri come ad esempio CO Veneto non erano stati ancora creati. Tutte le applicazioni pre esistenti disponevano di sistemi di autenticazione specifici costringendo gli utenti a diverse registrazioni e a ridigitare nuovamente username e password ad ogni passaggio da un’applicazione web all’altra. Molti servizi come AROF, Adempimenti On Line e Pegaso si basavano su una base dati comune (denominata CSM) contenente le informazioni di profilazione degli utenti per i servizi a cui erano registrati. Le informazioni di profilazione venivano però memorizzate nel database specifico dell’applicazione così da creare diversi problemi nella gestione degli utenti ad opera degli amministratori del sistema con la possibilità di errori nella replicazione delle login nei database specifici che ne impedivano di fatto l’accesso agli utenti. Altri servizi come il SIL Locale potevano disporre di un database completamente distinto dagli altri senza nessun vincolo sullo spazio dei nomi utenti tra i due sistemi. La Borsa Lavoro si appoggiava a sistemi diversi di autenticazione che si rifacevano a framework relativi alla federazione nazionale e che seguivano quindi logiche diverse. A fronte di situazioni così eterogenee gli utenti si vedevano costretti ad effettuare una o più registrazioni a seconda del numero di servizi richiesti con la necessità di memorizzare le relative password. Questo comportava in alcuni casi l’utilizzo di password giudicate insicure oppure l’utilizzo di una sola password per tutti gli account ma che andava comunque digitata nuovamente ad ogni cambio di applicazione senza soluzioni di continuità. Situazione successiva allo sviluppo del progetto L’introduzione del sistema di Single Sign On sviluppato per il sistema Veneto Lavoro ha introdotto una semplificazione nella gestione della profilazione utenti da parte sia degli amministratori sia degli utenti stessi. Tutti i servizi sopracitati escluso Borsa Continua Nazionale del Lavoro, sono attualmente accessibili tramite il sistema di autenticazione SSO senza la necessità da parte dell’utente di digitare più volte la coppia username/password. Anche i dati di profilazione delle applicazioni AROF, Adempimenti On Line, Pegaso e CO Veneto sono stati integrati nel repository utenti fornito dal database CSM con un notevole vantaggio per gli amministratori. Si è reso necessario uno studio per verificare che non ci fossero sovrapposizioni tra gli insiemi dei nomi degli utenti registrati nel database CSM e gli utenti SIL di modo da non dover creare una federazione ma solamente un'unica componente del sistema per effettuare le operazioni di login e di retrieve dei profili utenti (Identity Provider). Le applicazioni relative al servizio CO-Veneto sono state scritte durante lo sviluppo del sistema SSO Veneto Lavoro e pertanto la loro integrazione con il sistema è quello standard e si basa su una componente (Guard) creata per integrarsi all’interno delle applicazioni web e abilitarne l’accesso nell’ambito del Single Sign On. Questa componente si preoccupa di guidare l’utente nelle operazioni di autenticazione e di estrapolare i dati di profilazione utente alla fine del processo, fornendoli alla applicazione originale attraverso gli header di una richiesta http. Il modulo di autenticazione delle applicazioni che si basano sull’utilizzo di un Guard diventa quindi un semplice modulo per la lettura dei dati di una request http e l’elaborazione di questi dati secondo gli scopi dell’applicativo specifico. L’integrazione delle applicazioni web preesistenti ha richiesto la riscrittura dei diversi sistemi di autenticazione specifica per conformarsi alle nuove specifiche del sistema create per reperire i dati di profilazione utente. Le applicazioni potranno ricavare tali dati semplicemente a partire da header http. Per quanto riguarda il servizio AROF esso è stato riscritto trasformandone il motore scritto in PowreBuilder in una applicazione J2EE ‘pure java’ passando così da un server Jaguar ad un server JBoss. Con l’occasione è stata introdotta la componente Guard. Altri applicativi di gestione interna o relativi ai forum di assistenza hanno integrato questa componente come descritto per il servizio AROF. L’applicazione Adempimenti On Line invece continua a risiedere in un Jaguar Server in cui si è riscontrato una incompatiblità tra le librerie della componente Guard e quelle del server il chè ne ha di fatto impedito l’utilizzo. In questo caso è stata creata una componente per ovviare al problema in grado di effettuare la procedura di autenticazione su richiesta risiedendo però in un diverso application server; tale componente è stata definita GuardTunneling e verrà illustrata più dettagliatamente nel proseguo del documento. La soluzione proposta per Adempimenti On Line si è resa necessaria anche per il servizio Apprendiveneto in quanto sviluppato con tecnologia .NET e quindi incompatibile con una componente Java. Concludiamo con gli applicativi del servizio SIL Locale che risiedono in un application server WebSphere di cui non si è potuto verificare la compatibilità con le librerie della componente SSO. In tal caso, su richiesta degli sviluppatori di tali sistemi, si è provveduto ad utilizzare nuovamente la componente GuardTunneling. GEISOFT Srl Geisoft srl è una società formata nel 2003 da professionisti operanti da oltre 15 anni nell’ambito dell’Information & Communication Technology e della Gestione Aziendale Integrata nel settore pubblico e privato. Geisoft conta un organico di circa 15 persone e nel 2008 ha conseguito la certificazione aziendale di qualità ISO 9001:2000. La missione di Geisoft è quella di promuovere quelle tecnologie, infrastrutture e competenze che permettano ai clienti di ridisegnare efficacemente i propri processi ed applicazioni aziendali. Particolarmente rilevante è l’impegno nel settore delle nuove tecnologie e dell’ opensource in cui, oltre alla soddisfazione dei clienti, ha potuto riscontrare l’attenzione dei maggiori operatori nazionali. Il know-how maturato dallo staff Geisoft attraverso la progettazione, lo sviluppo e l’avviamento di molteplici sistemi informativi, personalizzabili e scalabili, ha consentito alla Pubblica Amministrazione e alle Imprese di utilizzare tale bagaglio di esperienze per adottare le migliori strategie operative che concorrono al successo nei settori specifici. La qualità dei prodotti e la qualità dei servizi sono abbinati coerentemente con una visione del rapporto con il cliente in chiave di partnership per il costante miglioramento del servizio nella Pubblica Amministrazione e del business d’impresa. La progettazione e realizzazione di soluzioni per le aziende pubbliche e private che utilizzano le tecnologie internet è la mission principale dell’azienda. Geisoft svolge altresì un ruolo di consulente e di business partner per quelle organizzazioni che intendono inserire organicamente la tecnologia internet come componente architetturale di riferimento per i propri sistemi informaticoorganizzativi. In questi anni Geisoft ha realizzato e condotto con successo molti progetti nella Pubblica Amministrazione per i servizi al Mercato del Lavoro e della Scuola per clienti quali il Ministero del Lavoro, Veneto Lavoro e la Regione Veneto. Il progetto in esame si inserisce all’interno delle soluzioni tecnologiche sviluppate per la Regione Veneto che vanno ad integrare diversi servizi tra cui CO-Veneto (Comunicazioni Obbligatorie), SIL (Sistema Informativo Lavoro), AROF (Anagrafica Regionale Obbligo Formativo). Il progetto Il progetto di sviluppo di un sistema di Single Sign On per l’accesso ai servizi di Veneto Lavoro si inserisce nel progetto di sviluppo del sistema informatico per la gestione delle Comunicazioni Obbligatorie On Line come indicato dal Decreto Interministeriale del 30 Ottobre 2007 del Ministero del Lavoro e della Previdenza Sociale e del Ministero per le Riforme e le Innovazioni nella Pubblica Amministrazione. Nello specifico l’articolo 5 del decreto stabiliva che “La trasmissione dei dati contenuti nella scheda anagrafico-professionale tra servizi competenti avviene esclusivamente per via informatica, secondo gli standard tecnici definiti nell’allegato E ”. In base a questa direttiva diventava di primaria importanza dotarsi di un sistema informatico affidabile e sicuro per poter essere certi di offrire un servizio adeguato agli utenti di Veneto Lavoro. Naturalmente la gestione degli accessi e della profilazione degli utenti è, per un sistema che si vuole definire sicuro, di cruciale importanza. La certezza del riconoscimento delle credenziali utente è, nel progetto in esame, ancora più importante perché determina la responsabilità delle operazioni svolte nei sistemi informativi nazionali anche in previsioni di possibili violazioni o dati non veritieri. Nel precedente decreto interministeriale del 21 Giugno 2007, articolo 1 comma H “’soggetti abilitati’, i soggetti obbligati direttamente, nonché gli organismi che ai sensi della normativa vigente possono effettuare le comunicazioni in loro nome e per conto, secondo le modalità stabilite da ciascuna Regione e Provincia Autonoma” e comma J “’servizi informatici’, le procedure applicative messe a disposizione dai servizi competenti ai soggetti abilitati per consentire la trasmissione informatica dei moduli, secondo le modalità stabilite da ciascuna Regione e Provincia Autonoma” si puntualizzava come sia compito delle regioni o province autonome predisporre dei sistemi informatici per consentire l’invio delle comunicazioni obbligatorie ai soggetti abilitati. Questo afferma ulteriormente l’importanza di un sistema di autenticazione e profilazione degli utenti per poter distinguere i soggetti abilitati dai soggetti non abilitati. Naturalmente il progetto non è partito dal nulla in quanto anche precedentemente esistevano nelle singole applicazioni dei moduli per l’autenticazione che si appoggiavano a repository interni o che integravano un repository centrale, denominato CSM, estendendone i profili utente. Per lo sviluppo del nostro progetto si è deciso di sfruttare il repository utente ufficiale di Veneto Lavoro (CSM) a cui affiancare le tabelle con le estensioni dei profili; inoltre si è poi integrato anche un database Oracle denominato Profile Manager utilizzato dal Sistema Informativo del Lavoro (SIL) del Veneto. Questo modo di operare, oltre a rendere più semplice il passaggio al nuovo sistema, ha di fatto reso il nostro sistema un collettore verso i diversi database utente preesistenti seguendo quindi le specifiche Shibboleth che, come vedremo in seguito, è lo standard utilizzato per l’implementazione del nostro modulo del sistema di Identity management di Veneto Lavoro. Prendendo a riferimento il documento contenente le specifiche del servizio di registrazione del progetto Borsa Continua Nazionale del Lavoro / SIL si è potuto constatare come la gestione del problema della sicurezza sia un problema molto sentito e che la loro soluzione, così come la nostra, si basi su “un Servizio di Autenticazione Federato dei domini che consenta di rendere mutuamente interscambiabili le attribuzioni di identità digitale operate dai singoli domini, su una base di rapporti di fiducia tra essi”. Queste specifiche hanno permesso una visione di insieme migliore su di un sistema reale e hanno determinato la scelta nostra di utilizzare lo standard SAML per lo scambio di dati relativi alle richieste di autenticazione e ai dati di profilazione utente anche in vista di una integrazione con il progetto BCNL / SIL. Il Decreto ministeriale del 30 Ottobre 2007 è stato successivamente rettificato come descritto dai successivi decreti interministeriali in data 11 febbraio 2008 e 8 maggio 2008. Nel tempo trascorso lo sviluppo del sistema SSO ha preso una sua precisa connotazione e viene sviluppato separatamente dal progetto CO. Il progetto Single Sign On è oramai indipendente da CO-Veneto integrando molti altri servizi di Veneto Lavoro non sviluppati ne gestiti da GEISOFT. Strumenti utilizzati Per lo sviluppo del progetto sono stati utilizzati diversi software i quali hanno permesso di seguirne lo sviluppo dalla fase di analisi del progetto base fino a quella di testing e collaudo. Durante i seguenti paragrafi presenteremo questi strumenti e vedremo come la maggior parte di essi appartengano al mondo open source e free software. Progetto Opensource Diventa importante a questo punto della trattazione focalizzare l’attenzione sul significato di prodotto opensource in quanto il prodotto che è stato realizzato nel progetto in esame appartiene a questa categoria. Il fenomeno Open source può essere riassunto in un insieme di principi e metodologie collaborative messe in atto per la realizzazione di un prodotto e rese possibili dalla libertà di accesso ad una infrastruttura informatica senza gerarchie precostituite. Il mondo Open source è caratterizzato da un uso della legislazione a tutela della proprietà intellettuale funzionale alla diffusione delle conoscenze sotto le minori restrizioni possibili; questo permette ad altre persone di contribuire ai progetti oppure di riutilizzarne le funzionalità. Il primo ambito in cui il fenomeno si è affermato è quello della produzione e commercializzazione del software; qui hanno potuto crescere nuove organizzazioni strutturate per convogliare contributi esterni, senza preclusioni sulla provenienza dei partecipanti e capaci di coordinare la elaborazione e lo sviluppo di un progetto in tali condizioni aperte. Ma che differenza intercorre tra le definizioni, spesso utilizzate come sinonimi, free software o open source ? Il movimento del Software Libero e quello Open Source sono come due partiti politici all'interno della stessa comunità. Questi due movimenti fanno certamente parte di una stessa comunità che si contrappone al software proprietario ma allo stesso tempo esse si differenziano in quanto concettualmente diverse. I due movimenti sono in disaccordo sui principi di base, ma d'accordo sulla maggior parte degli aspetti pratici tanto che spesso lavorano assieme su progetti specifici. Il principale argomento a favore del software open source è che software libero può far sentire a disagio perchè parlare di libertà, di problemi etici, di responsabilità così come di convenienza, è chiedere alla gente di pensare a cose che potrebbero voler ignorare. Anni fa, alcuni sviluppatori di software libero si accorsero di queste reazioni di disagio e iniziarono a cercare una soluzione per evitarle. Pensarono che mettendo in secondo piano l'etica e la libertà e parlando solo dei benefici pratici immediati di parte del software libero, sarebbero stati in grado di vendere il software più efficacemente ad una determinata utenza, specialmente quella aziendale. Il termine open source viene coniato come un modo per continuare su questa strada, un modo per essere ‘più accettabili alle aziende’. Questo approccio al problema ha dimostrato di funzionare e oggi molte persone vi passano per ragioni puramente pratiche. Ambiente di sviluppo Per lo sviluppo del progetto in esame si sono utilizzate la potenza e la versatilità della tecnologia Java così da poterle testare in combinazione con le potenzialità dell’application server Jboss. Come si è visto l’azienda GEISOFT Srl ha una lunga esperienza nell’utilizzo di tale linguaggio di programmazione e questo potrà naturalmente portare dei benefici sia immediati per la familiarità degli strumenti sia a lungo termine in caso di manutenzione applicativa. Java si è sviluppato molto in ambito web perciò si è scelto di utilizzarlo e in particolare la tecnologia J2EE. Come ambiente di sviluppo si è optato per l’adozione di Eclipse, uno dei più celebri IDE open source della comunità Java, perché esso offre un buon strumento per sviluppare il codice sorgente e degli ottimi tools per il debug, la documentazione, la gestione dei files e le operazioni di compilazione. Eclipse fu rilasciato originariamente dalla società IBM e viene gestito ora da una società no-profit di 50 software house denominata Eclipse Foundation. Scritto in Java e utilizzato soprattutto per lo sviluppo come IDE Java Eclipse non si limita però a questo solo linguaggio ma fornisce ambienti di sviluppo per altri linguaggi (es. C/C++, cobol, C#, Python, …) e strumenti di supporto come la gestione dei file system, file xml, script ant, cvs, database e molti altri tramite l’utilizzo di appositi plugin. Come si può notare fin dal primo utilizzo dell’ambiente Eclipse tutte le funzionalità sono facilmente individuabili e l’ambiente è molto ordinato. Con un semplice click si può passare ad altre viste come ad esempio “Java” o “Debug” in grado di fornire le informazioni necessarie ai vari ambiti dello sviluppo. La facilità di utilizzo, la sobrietà dell’interfaccia grafica, le ottime prestazioni e la mia esperienza nell’utilizzo dell’IDE hanno fatto preferire questo strumento al concorrente NetBeans: sebbene presenti meno wizard è sicuramente più snello e prestazionale e, a mio avviso, più professionale e flessibile. Uno degli aspetti sicuramente più interessanti di questo IDE è sicuramente la flessibilità: si tratta di un ambiente multi piattaforma, garantisce il controllo automatico della sintassi Java e offre un workspace facilmente personalizzabile nonché una semplice gestione delle risorse. Si compone di un kernel di dimensioni ridotte e di un framework interamente basato sui plugin o set di plugin per le diverse necessità degli utenti. Oltre alle funzionalità offerte dalla versione professionale dell’ambiente di sviluppo si è installato un plugin aggiuntivo per l’utilizzo del protocollo SVN per la gestione del versioning dei files del progetto. L’utilizzo di un tale strumento è di fatto necessario in ambienti professionali di sviluppo software dove occorre poter lavorare in modo concorrenziale sui sorgenti del progetto all’interno di uno stesso team di sviluppo senza preoccuparsi dei dettagli della sincronizzazione degli stessi. Inoltre permette di avere uno storico delle modifiche dei files sorgenti che in molti casi si è rivelato utile. Database Un Database Management System (DBMS) è un sistema software progettato per consentire la creazione e manipolazione efficiente di database (ovvero di collezioni di dati strutturati come possono esserlo i dati relativi ai profili utente) solitamente da parte di più utenti. I DBMS svolgono un ruolo fondamentale in numerose applicazioni informatiche quali contabilità, archivi multimediali, archivi documentali, gestione delle risorse umane e sistemi informativi. Un DBMS può essere costituito da un insieme assai complesso di programmi che controllano l'organizzazione, la memorizzazione e il reperimento dei dati in un database. Un DBMS controlla anche la sicurezza e l'integrità del database. Esistono diversi modelli possibili di database ma il modello dominante oggi è quello relazionale, normalmente utilizzato con il linguaggio di interrogazione SQL. Molti DBMS supportano le Application Program Interface (API) dell'Open Database Connectivity (ODBC) o Java Database Connectivity (JDBC), che forniscono ai programmatori strumenti standardizzati per l'accesso ai database. I database server sono computer ottimizzati per ospitare i programmi che costituiscono il database reale e sui quali girano solo il DBMS e il software ad esso correlato (nelle situazioni reali spesso questi computer svolgono anche altre funzioni non correlate con la gestione del database). Di solito si tratta di macchine multiprocessore e con dischi fissi configurati in modalità RAID per una memorizzazione stabile ed affidabile dei dati che garantisca la continuità del servizio anche in caso di guasto ad un componente. Nel caso in esame Veneto Lavoro disponeva nel suo apparato sistemistico di diversi server database SQL Server con configurazioni di Fault Tolerant e Load Balancer per questo motivo ci siamo adeguati a questo vincolo imposto dalla situazione preesistente senza proporre l’utilizzo di DBMS open source. Server Grazie all’utilizzo di Java e della sua Virtual machine abbiamo potuto sfruttare la sua indipendenza dal Sistema Operativo così da poter tranquillamente sviluppare il progetto in ambiente Windows e deplorarlo in ambiente Linux sui server di Veneto Lavoro. La scelta dell’ambiente Linux, ed in particolare delle distribuzioni RedHat e Ubuntu per gli ambienti di produzione, è stata indirizzata dall’alta affidabilità di questo sistema operativo, dal costo pressoché nullo delle licenze e dalla mia esperienza in campo sistemistico. Il sistema nel suo complesso prevede l’utilizzo congiunto di un web server e di più application server per l’offerta dei servizi di Veneto Lavoro. Per quando riguarda il server web la scelta si è indirizzata subito verso il server Apache per la sua affidabilità, configurabilità, robustezza e stabilità che ne fanno uno dei server più utilizzati al mondo da milioni di utenti. Apache è sicuramente la migliore dimostrazione di come il lavoro volontario e cooperativo all'interno di internet sia capace di produrre applicazioni di qualità professionale difficilmente eguagliabile. Si tratta di un server universale in quanto è installabile su molti sistemi operativi e dispositivi enbedded ed è un server altamente configurabile a struttura modulare; attualmente esistono molti moduli per Apache, per soddisfare ogni esigenza. Proprio grazie a questi moduli aggiuntivi è stato possibile configurare agilmente un server Apache di modo che funzionasse da frontend per gli utenti e reindirizzasse le chiamate verso i cluster Jboss in cui risiedono le web application. JBoss è uno standards-compliant Enterprise JavaBeans application server implementato completamente in Java. Il progetto è cominciato nel 1999 come semplice EJB container, negli anni si è sviluppato ed è stato integrato con nuovi moduli fino a diventare il più popolare application server ed essere stato eletto il miglior application server dell'anno nel 2002. Uno dei successi di JBoss deriva dalla metodologia di programmazione con la quale è stato pensato basata su JMX (Java Management eXtension) che è il mezzo migliore per ottenere del software integrabile. JMX fornisce un 'aggancio' comune sul quale poter inserire moduli, contenitori e plugins che costituiscono JBoss e che forniscono features molto interessanti per il progetto in esame come ad esempio il Cluster e il Load Balancing. Il clustering ci consente di eseguire applicazioni su server in parallelo (chiamati anche nodi). Ciò porta benefici alle elaborazioni, consentendo di distribuire il carico in modo uniforme. Il clustering è cruciale per applicazioni di livello enterpise, che hanno bisogno di scalabilità estrema. Il Load Balancing è una tecnica informatica che consiste nel distribuire il carico di un servizio, ad esempio la fornitura di un sito web, tra più server. Si aumentano in questo modo la scalabilità e l’affidabilità dell’architettura nel suo complesso. Altro aspetto molto importante per la scelta di Jboss è l’utilizzo di Tomcat come plugin integrato nell’application server. Apache Tomcat (o semplicemente Tomcat) è un web container open source che implementa le specifiche JSP e Servlet di Sun Microsystems, fornendo quindi una piattaforma per l’esecuzione di applicazioni Web sviluppate nel linguaggio Java. La sua distribuzione standard include anche le funzionalità di web server tradizionale, che corrispondono al prodotto Apache. Browser Durante le fasi di sviluppo e testing si è fatto uso di diversi browser per poter testare la funzionalità del sistema SSO nei diversi ambienti. L’utilizzo di browser diversi da quello offerto dall’ambiente di sviluppo Eclipse ha permesso di sperimentare direttamente gli errori di incompatibilità di gestione di cookie e javascript nei diversi motori web. Un’analisi delle utenze medie di Veneto Lavoro ci ha permesso di constatare che la stragrande maggioranza degli utenti dei servizi utilizza Internet Explorer (versioni 6 e 7) seguiti da un nutrito gruppo di utilizzatori di FireFox, mentre solo una piccola parte utilizza browser alternativi come Safari o Opera. Queste considerazioni hanno portato a scegliere come browser ufficiale dei test Internet Explorer così da avere un effettivo controllo sui problemi dell’utente medio accompagnato dal browser Firefox per lo sviluppo in quanto dispone di plugin migliori per il debugging. Sono stati fatti inoltre dei test saltuari anche su Opera e Chrome per poter verificare la compatibilità del sistema di SSO con la maggior parte dei browser utilizzati.