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.