Michele Santomauro - Progetto freESBee
Transcript
Michele Santomauro - Progetto freESBee
UNIVERSITA’ DEGLI STUDI DELLA BASILICATA FACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E NATURALI CORSO DI LAUREA SPECIALISTICA IN INFORMATICA TESI DI LAUREA SPECIALISTICA POLITICHE DI SICUREZZA E GESTIONE DELL'IDENTITÀ NEL SISTEMA PUBBLICO DI COOPERAZIONE APPLICATIVA Relatore Prof. Giansalvatore MECCA Candidato Michele Santomauro Matricola 32821 Sommario Introduzione ............................................................................................................. 1 Capitolo 1 : Architetture SOA ................................................................................. 3 Web Service ......................................................................................................... 5 SOAP................................................................................................................. 6 WSDL ................................................................................................................ 7 UDDI ................................................................................................................. 8 Sicurezza nelle architetture SOA.......................................................................... 9 Sicurezza hardware ........................................................................................ 10 Sicurezza a livello trasporto ........................................................................... 10 Sicurezza del messaggio................................................................................. 11 Capitolo 2 : Cooperazione Applicativa .................................................................. 20 Architetture SOA nella cooperazione applicativa .............................................. 20 Specifiche del CNIPA – Il progetto SPCoop ........................................................ 21 Sistema informativo locale ............................................................................ 21 Porta di dominio ............................................................................................ 22 Accordo di Servizio......................................................................................... 24 Servizi di registro SICA ................................................................................... 25 Busta e-Gov .................................................................................................... 26 Requisiti di sicurezza del progetto ..................................................................... 28 Capitolo 3 : Progetto ICAR ................................................................................... 30 Organizzazione del progetto .............................................................................. 30 OpenSPCoop ...................................................................................................... 31 FreESBee ............................................................................................................ 34 Capitolo 4 : Task INF-3 e relative implementazioni ............................................. 39 I componenti dell’architettura........................................................................... 40 Lo scenario di riferimento .................................................................................. 43 Lo scenario nella cooperazione applicativa ....................................................... 44 Tecnologie di riferimento .................................................................................. 47 Reference Implementation ................................................................................ 47 Tecnologie di riferimento .............................................................................. 51 Integrazione nell’architettura SPCoop........................................................... 51 FreESBee-SP ....................................................................................................... 52 Progetto SIL-VIO............................................................................................. 54 Progetto Shibboleth ....................................................................................... 56 Scenario in cooperazione applicativa ............................................................ 57 Configurazione delle istanze .......................................................................... 64 Tecnologie di riferimento .............................................................................. 66 Capitolo 5 : Sperimentazione dell’architettura SPCoop ........................................ 67 Il caso d’uso “Identificazione assistito” ............................................................. 69 Il caso d’uso “Segnalazione ricovero” ................................................................ 73 Il caso d’uso “Variazione anagrafica” ................................................................ 75 Capitolo 6 : Soluzioni a confronto ......................................................................... 79 Sicurezza in OpenSPCoop e in FreESBee............................................................ 79 Reference Implementation vs FreESBee-SP ...................................................... 80 Schema delle differenze..................................................................................... 83 Appendice .............................................................................................................. 84 Bibliografia ............................................................................................................ 86 Introduzione L’avvento di internet nella società dell’informazione ha segnato un cambiamento radicale nel modo di pensare ed agire delle persone, in tutti gli ambiti, soprattutto in quello professionale. Tale cambiamento ha interessato anche la pubblica amministrazione, che si è trovata a dover far fronte ad una richiesta sempre più pressante, da parte dei cittadini e delle imprese, di adozione di strumenti che permettano, da un lato, di fruire di servizi telematici per la compilazione di pratiche, e, dall’altro, di snellire le procedure burocratiche per l’assoluzione delle stesse. Tale compito, ad oggi, è stato assolto dalla pubblica amministrazione in maniera soddisfacente, sia mettendo a disposizione dei cittadini una serie di servizi cosiddetti “G2C”, ossia “Government to Citizen”, a cui è possibile accedere comodamente attraverso internet, sia adottando sistemi che automatizzano e velocizzano l’elaborazione delle pratiche. Nonostante ciò, da qualche anno a questa parte, si è via via definita una nuova esigenza, che riguarda la necessità di mettere tutti gli enti della PA in comunicazione tra loro. L’obiettivo a cui si vuole arrivare è quello di permettere, ad esempio, ad un cittadino della regione Lombardia, di origini Lucane, che ha la necessità di avere un certificato di nascita, di non recarsi necessariamente presso il comune di nascita per ottenerlo, bensì, può recarsi presso il proprio comune di residenza, il quale, per conto suo, in maniera telematica, può richiederlo al comune di nascita. A tale scopo, nel 2005, il CNIPA (Centro Nazionale per l’Informatica nella Pubblica Amministrazione – http://www.cnipa.it) ha avviato due progetti paralleli, e stilato le specifiche per : la realizzazione di un’infrastruttura che permetta l’interoperabilità tra tutte le pubbliche amministrazioni italiane (progetto SPC - Sistema Pubblico di Connettività), e la cooperazione e la fruizione dei servizi che le stesse mettono a disposizione (progetto SPCoop - Sistema Pubblico di Cooperazione). Nell’ambito di questa tesi si approfondiscono soltanto -1- gli aspetti relativi ad SPCoop, con particolare attenzione alle tematiche riguardanti la sicurezza. -2- Capitolo 1 : Architetture SOA SOA è l’acronimo di Service Oriented Architecture, un’architettura software che, come dice il nome stesso, è orientata ai servizi. La filosofia alla base è quella di decentrare la “business logic” in unità logiche più piccole, per lo più indipendenti, in grado di assolvere a specifici compiti, messi a disposizione sotto forma di servizi. Questi ultimi, infatti, rappresentano il punto di forza di tutta l’architettura, in quanto permettono l’interoperabilità tra sistemi eterogenei, al fine di realizzare quello che è il cosiddetto “processo di business”. Per questo motivo, quindi, non esiste una specifica piattaforma per realizzare questo tipo di architetture, in quanto gli elementi che ne fanno parte, sono proprio i processi applicativi già esistenti, opportunamente ristrutturati per l’erogazione di servizi. Esempio di architettura distribuita -3- Le proprietà che contraddistinguono le architetture SOA sono : • loose coupling (basso accoppiamento) : gli elementi che ne fanno parte sono indipendenti gli uni dagli altri • message orientation (orientamento ai messaggi) : la comunicazione tra i componenti avviene attraverso scambio di messaggi • description orientation (orientamento alla descrizione) : la semantica di ciascun elemento viene descritta attraverso i metadati e resa pubblica per coloro che vogliono usufruire del servizio reso • autonomia : i componenti sono autonomi • riusabilità : per promuovere il riuso di funzionalità • composizione : i servizi resi da ciascun componente possono essere aggregati e coordinati per formare una logica complessa • neutralità della piattaforma : i messaggi hanno formati standard (ad esempio XML) I componenti principali che operano in tali architetture sono : • Service Provider : è il componente che fornisce un servizio; • Service Consumer : è il componente che richiede un servizio; • Service Registry : è l’intermediario che ha il compito di pubblicare le informazioni circa il servizio messo a disposizione dal Service Provider. -4- L’interazione tra i tre componenti avviene nel seguente modo : il Service Provider mette a disposizione dei servizi, le cui caratteristiche vengono pubblicate dal Service Registry (URL, modalità di accesso ecc). Quando il Service Consumer ha la necessità di usufruire di un servizio, contatta il Service Registry ottenendo tutte le informazioni che gli occorrono. Da quel momento in poi può contattare direttamente il Service Provider ed ottenere i servizi di cui necessita. Web Service Di seguito viene riportata la definizione del W3C (World Wide Web Consortium – http://www.w3.org) : “E’ un sistema software progettato per supportare l'interoperabilità tra diversi elaboratori su di una medesima rete; caratteristica fondamentale di un Web Service è quella di offrire un'interfaccia software (descritta in un formato automaticamente elaborabile quale, ad esempio, il Web Services Description Language) utilizzando la quale altri sistemi possono interagire con il Web Service -5- stesso attivando le operazioni descritte nell'interfaccia tramite appositi "messaggi" inclusi in una "busta" (la più famosa è SOAP): tali messaggi sono, solitamente, trasportati tramite il protocollo HTTP e formattati secondo lo standard XML.” Fonte : http://it.wikipedia.org/wiki/Web_service Questa tecnologia, da quanto si evince anche dalla definizione, si basa su un certo numero di standard, quali SOAP, WSDL e UDDI, che ne permettono il funzionamento. Da notare che i Web Service non sono legati alle architetture SOA, tuttavia rappresentano dei candidati ideali ad essere utilizzati in tale ambito grazie alla loro indipendenza dalla piattaforma ed al linguaggio e alla modalità standard per definire l'interfaccia verso l’esterno. SOAP E’ l’acronimo di Simple Object Access Protocol e rappresenta uno standard per lo scambio di messaggi tra componenti distribuiti. Può operare su diversi protocolli, ma il più utilizzato è quello HTTP. I messaggi sono in formato XML e seguono la configurazione Head – Body. L’Header è opzionale e contiene informazioni circa il routing, la sicurezza e le transazioni, mentre il Body è obbligatorio e contiene il messaggio vero e proprio scambiato tra le due parti (chiamato in gergo Payload). <?xml version='1.0' encoding='utf-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> … </soapenv:Header> <soapenv:Body> … </soapenv:Body> </soapenv:Envelope> Esempio di messaggio SOAP -6- WSDL E’ l’acronimo di Web Service Description Language e rappresenta un linguaggio formale, in formato XML, per descrivere l’interfaccia di un Web Service. Un documento WSDL è composto da cinque elementi: • Types : definisce i tipi di dati coinvolti nello scambio dei messaggi (definiti nel linguaggio XML Schema) • Message : specifica le informazioni sui parametri ed i loro tipi circa il messaggio di input e output • PortType : indica le operazioni supportate da un servizio web • Binding : stabilisce il protocollo da utilizzare per lo scambio dei messaggi, HTTP GET/POST, MIME o SOAP • Service : riporta l’URL al quale è possibile contattare il servizio <wsdl:definitions name="Esempio" targetNamespace="http://namespaces.esempio.com" xmlns:es="http://www.esempio.com/EsempioWSDL.wsdl" xmlns:esxsd="http://schemas.esempio.com/ EsempioWSDL.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:types> <xsd:schema targetNamespace="http://namespaces.example.com" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <xsd:element name="…"> <xsd:complexType> <xsd:sequence> <xsd:element name="…" type="string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <!—- Messaggio di richiesta --> <wsdl:message name="messaggioRichiestaEsempio"> <wsdl:part name="body" element="esxsd:…"/> </wsdl:message> <!—- Messaggio di risposta --> <wsdl:message name="messaggioRispostaEsempio"> <wsdl:part name="body" element="esxsd:…"/> </wsdl:message> -7- <wsdl:portType name="portTypeEsempio"> <wsdl:operation name="…"> <wsdl:input message="es:messaggioRichiestaEsempio"/> <wsdl:output message="es:messaggioRispostaEsempio"/> <wsdl:fault message="es:messaggioFaultEsempio"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="bindingEsempio" type="es:portTypeEsempio"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="operationEsempio"> <soap:operation soapAction="http://www.esempio.com/Esempi"/> <wsdl:input> <soap:body use="literal" namespace="http://schemas.esempio.com/EsempioWSDL.xsd"/> </wsdl:input> <wsdl:output> <soap:body use="literal" namespace="http://schemas.esempio.com/EsempioWSDL.xsd"/> </wsdl:output> <wsdl:fault> <soap:body use="literal" namespace="http://schemas.esempio.com/EsempioWSDL.xsd"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="servizioEsempio"> <wsdl:documentation>Esempio file WSDL</wsdl:documentation> <wsdl:port name="…" binding="es:bindingEsempio"> <soap:address location="http://www.esempio.com/Esempio"/> </wsdl:port> </wsdl:service> </wsdl:definitions> Esempio di WSDL UDDI E’ l’acronimo di Universal Description, Discovery and Integration e rappresenta lo strumento attraverso cui è possibile dinamicamente accedere ai servizi disponibili sulla rete. Si compone di un registro, denominato UBR (UDDI Business Registry), che contiene informazioni sui servizi disponibili. Tali informazioni sono organizzate in modo da effettuare diversi tipi di ricerche basate sulla consultazione di tre cataloghi differenti : • White Pages : contenenti informazioni generiche sull'azienda (ad -8- esempio la ragione sociale, l'indirizzo, ecc) • Yellow Pages : contenente una classificazione dei servizi sottoforma di tassonomia per poter effettuare le ricerche in base alla categoria a cui appartiene un servizio • Green Pages : contenente informazioni tecniche sui servizi e grazie alle quali gli stessi possono essere invocati Esempio di utilizzo del registro UDDI Sicurezza nelle architetture SOA I vantaggi offerti da SOA nella realizzazione di infrastrutture complesse, si scontrano con la complessità di rendere una tale architettura completamente sicura. Quello della sicurezza è un problema che al giorno d’oggi è molto sentito, soprattutto nell’ambito informatico. Questo fenomeno è amplificato nelle architetture SOA, in quanto non si parla più di un singolo sistema, ma di molti -9- sistemi indipendenti ed interoperanti, ciascuno dei quali deve agire nel rispetto dei requisiti di sicurezza, al fine di non pregiudicare la stabilità dell’intera infrastruttura. Al giorno d’oggi esistono una serie di strumenti, standard e specifiche (per lo più in via di standardizzazione) il cui scopo è quello di garantire la massima sicurezza possibile in tali architetture. Di seguito viene illustrato lo stato dell’arte oggi in tale settore. Sicurezza hardware A livello hardware la sicurezza è garantita dai firewall XML, dispositivi in grado di filtrare il traffico di rete a livello applicativo, agendo fino al livello 7 della pila ISO/OSI. Il compito di tali apparecchi è quello di filtrare tutto il traffico XML, sia in ingresso che in uscita, in base a regole prestabilite. Sicurezza a livello trasporto Il canale di comunicazione svolge un ruolo molto importante, in quanto ad esso è affidato il compito di trasportare informazioni, dati e quant’altro, da un mittente ad un destinatario. Avere a disposizione un canale sicuro limita, ma non evita, la possibilità di attacchi del tipo MITM (Man in the middle), oppure Spoofing ecc. Sia TLS (Transport Layer Security) che SSL (Secure Sockets Layer), sono due protocolli crittografici che permettono di criptare la comunicazione tra sorgente e destinazione a livello trasporto. TLS è uno standard IETF (Internet Engineering Task Force) e rappresenta l’evoluzione di SSL, precedente protocollo sviluppato da Netscape Corporation. L’utilizzo tipico che ne viene fatto è nelle applicazioni client – server, più precisamente attraverso i browser web, infatti, viene utilizzato soprattutto quando si eseguono operazioni come transazioni online, inserimento di dati personali per l’accesso ad un servizio (nome utente e password) ecc. Il funzionamento è basato sulla validazione, da parte del client (e - 10 - quindi del browser), della firma digitale contenuta in opportuni certificati che risiedono sul server stesso. Ovviamente tali certificati sono validi soltanto se vengono rilasciati da autorità preposte allo scopo, definite Certification Authority. HTTPS rappresenta l’utilizzo del protocollo HTTP in un canale sicuro criptato con SSL, il cui principio di funzionamento si basa sul concetto di crittografia a chiave pubblica e privata ed i cui dettagli esulano dallo scopo di questa tesi. Per quanto tali protocolli risultino essere impeccabili, in realtà sono anch’essi vulnerabili ad attacchi, infatti, recenti studi, hanno dimostrato che una vulnerabilità di tali protocolli è rappresentata dall’attività di rinegoziazione che client e server effettuano periodicamente. Sicurezza del messaggio Dal momento che la sola sicurezza a livello trasporto non basta a garantire che la comunicazione sia esente da rischi, è stato necessario definire altre specifiche che permettono di salvaguardare la sicurezza dell’intero messaggio. Nell’ambito dei web service, le specifiche che garantiscono la sicurezza dei messaggi SOAP è parte di WS-*, termine con cui si indica l’insieme di specifiche che riguardano i Web Service. Alcune di esse sono già diventate standard, altre, invece, sono in fase di standardizzazione. Quelle più rilevanti sono : • WS-Security o XML Signature o XML Encryption • SAML (Security Assertion Markup Language) • XACML (eXtensible Access Control Markup Language) - 11 - Di seguito vengono analizzate nel dettaglio : WS-Security, XML Signature e XML Encryption E’ uno standard, promosso dalla OASIS (http://www.oasis-open.org), come estensione di SOAP per rendere sicuri i messaggi scambiati tra Web Service. Permette di garantire l’integrità e la confidenzialità grazie all’utilizzo di altri due standard, XML Signature ed XML Encryption, entrambi promossi, invece, dal consorzio W3C (http://www.w3.org). Il primo definisce le modalità con cui apporre la firma digitale su un documento XML, mentre il secondo specifica come criptare un messaggio XML. WS-Security prevede vari formati di firma e vari algoritmi per la crittografia dei dati, come, ad esempio : certificati X.509, Kerberos, USERID/Password, Asserzioni SAML, ecc. Tutte le informazioni vengono riportate nell’header di un messaggio SOAP, pertanto vengono elaborate a livello applicazione. Un esempio di messaggio SOAP con WS-Security è il seguente : <soap:Envelope …> <soap:Header> … </soap:Header> <soap:Body> … </soap:Body> </soap:Envelope> <soap:Envelope> <soap:Header> <wsse:Security soap:mustUnderstand="1"> <wsu:Timestamp …> <wsu:Created>…</wsu:Created> <wsu:Expires>…</wsu:Expires> </wsu:Timestamp> <wsse:BinarySecurityToken …> … </wsse:BinarySecurityToken> <xenc:EncryptedKey …> <xenc:EncryptionMethod …> <ds:DigestMethod/> </xenc:EncryptionMethod> <KeyInfo …> <wsse:SecurityTokenReference> <X509Data> <X509IssuerSerial> <X509IssuerName> … </X509IssuerName> <X509SerialNumber> … </X509SerialNumber> </X509IssuerSerial> </X509Data> </wsse:SecurityTokenReference> - 12 - </KeyInfo> <xenc:CipherData> <xenc:CipherValue> … </xenc:CipherValue> </xenc:CipherData> <xenc:ReferenceList> <xenc:DataReference …/> </xenc:ReferenceList> </xenc:EncryptedKey> <ds:Signature> <ds:SignedInfo> <ds:CanonicalizationMethod …/> <ds:SignatureMethod …/> <ds:Reference> <ds:Transforms> <ds:Transform …/> </ds:Transforms> <ds:DigestMethod …/> <ds:DigestValue> … </DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> … </ds:SignatureValue> <ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Reference …/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </wsse:Security> </soap:Header> <soap:Body …> <xenc:EncryptedData …> <xenc:EncryptionMethod …/> <xenc:CipherData> <xenc:CipherValue> … </xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </soap:Body> </soap:Envelope> Come si può notare dall’esempio, l’aggiunta della firma, unitamente alla crittografia dei dati, aggiunge un overhead sia nel trasporto, sia nell’elaborazione del messaggio stesso, in quanto, nel primo caso, la dimensione fisica risulta di gran lunga maggiore di quella del messaggio originale, mentre, nel secondo caso, - 13 - è necessario un lavoro in più per decriptare ciò che si è ricevuto e verificare la firma. SAML E’ l’acronimo di Security Assertion Markup Language. Rappresenta lo standard per l’autenticazione e l’autorizzazione tra domini differenti attraverso l’uso di messaggi XML. E’ promosso dalla OASIS e ad oggi è alla versione 2.0 . L’obiettivo a cui cerca di assolvere SAML è quello di fornire una soluzione versatile, ma allo stesso tempo funzionale, al problema del Multiple Sign On. Infatti, ordinariamente, il service consumer è costretto all’autenticazione su ciascun dominio nel quale intende richiedere l’erogazione di un servizio. Il motivo per cui si è resa necessaria questa standardizzazione è dovuto al fatto che, le modalità e le tecniche utilizzate per realizzare il Single Sign On, sono varie, ad esempio attraverso l’uso dei cookie, il che portava in una direzione di disomogeneità, che quindi rendeva impossibile l’interoperabilità tra sistemi eterogenei. Grazie a questa soluzione, ciascun Service Consumer ha a disposizione un proprio profilo, col quale richiedere l’accesso e l’erogazione di servizi ai vari domini. Questi ultimi sono in grado di validare tale profilo ed erogare il servizio, qualora esso risulti essere coerente con le politiche di sicurezza definite per quel dato servizio. In questo modo l’operazione di Sign On viene effettuata soltanto una volta, per l’acquisizione del profilo, ed utilizzata tutte le volte che viene richiesto. Il meccanismo di funzionamento è basato sulle “asserzioni”, cioè pezzi di codice XML che contengono proprio le informazioni che descrivono il richiedente, come, l’identificativo univoco ed i relativi attributi. Lo standard prevede che tali asserzioni vengano inserite all’interno della sezione WS-Security, che a sua volta è contenuta nell’header di un messaggio SOAP. - 14 - Un esempio di asserzioni estratto da un messaggio è il seguente : <saml:Subject> <saml:NameID Format="…">…</saml:NameID> <saml:SubjectConfirmation Method="…"> <saml:SubjectConfirmationData Address="127.0.0.1" InResponseTo="…" NotOnOrAfter="20010-12-31T18:10:58.030" Recipient="http://sp.unibas.it" /> </saml:SubjectConfirmation> </saml:Subject> <saml:Conditions NotBefore="2008-11-28T18:05:58.030" NotOnOrAfter="2008-11-28T18:10:58.030"> <saml:AudienceRestriction> <saml:Audience>http://sp.unibas.it </saml:Audience> </saml:AudienceRestriction> </saml:Conditions> <saml:AuthnStatement AuthnInstant="2008-11-28T18:05:57.643" SessionIndex="…" SessionNotOnOrAfter="2008-11-28T18:35:57.643Z"> <saml:SubjectLocality Address="127.0.0.1" /> <saml:AuthnContext> <saml:AuthnContextDeclRef> </saml:AuthnContextDeclRef> </saml:AuthnContext> </saml:AuthnStatement> <saml:AttributeStatement> <saml:Attribute FriendlyName="title" Name="idTitle" NameFormat="…"> <saml:AttributeValue xmlns:xs="…" xmlns:xsi="…" xsi:type="…"> Borsista </saml:AttributeValue> </saml:Attribute> <saml:Attribute FriendlyName="organizationUnit" Name="idOrganizationUnit" NameFormat=""> <saml:AttributeValue xmlns:xs="…" xmlns:xsi="…" xsi:type="…"> Unibas </saml:AttributeValue> </saml:Attribute> - 15 - </saml:AttributeStatement> </saml:Assertion> L’immagine riportata di seguito mostra, invece, lo schema delle interazioni che avvegono tra i vari componenti : XACML E’ l’acronimo di eXtensible Access Control Markup Language e rappresenta lo standard, promosso dalla OASIS, che comprende : • un linguaggio per definire le policy, in formato XML, circa i requisiti di accesso alle risorse, come, ad esempio, nome dell’organizzazione di appartenenza, ruolo ricoperto all’interno dell’organizzazione, ecc; • un modello di processamento delle informazioni contenute nel profilo del richiedente ed inviate assieme al messaggio di richiesta. - 16 - I componenti previsti dallo standard per realizzare il modulo di processamento sopra menzionato sono : • PAP (Policy Administration Point) : è il componente in cui vengono memorizzate e gestite le policy. • PDP (Policy Decision Point) : è il componente incaricato di valutare i requisiti del profilo e decidere se permettere o negare la fruizione del servizio richiesto. • PEP (Policy Enforcement Point) : è il componente che intercetta la richiesta dell’utente ed esegue le azioni decise dal PDP. • PIP (Policy Information Point) : è il componente di supporto al PDP che fornisce informazioni aggiuntive come, ad esempio, informazioni provenienti da directory LDAP. Un esempio di policy, richiesta e risposta è il seguente : <Policy …> <Target> <Subjects> <AnySubject/> </Subjects> <Resources> <Resource> <ResourceMatch …> <AttributeValue …> … </AttributeValue> <ResourceAttributeDesignator …/> </ResourceMatch> </Resource> </Resources> <Actions> <AnyAction/> </Actions> </Target> <Rule …> <Target> <Subjects> <AnySubject/> - 17 - </Subjects> <Resources> <AnyResource/> </Resources> <Actions> <Action> <ActionMatch> <AttributeValue …> … </AttributeValue> <ActionAttributeDesignator/> </ActionMatch> </Action> </Actions> </Target> <Condition> <Apply …> <SubjectAttributeDesignator …/> </Apply> <AttributeValue …>…</AttributeValue> </Condition> </Rule> </Policy> Policy <Request> <Subject> <Attribute …> <AttributeValue> … </AttributeValue> </Attribute> <Attribute> <AttributeValue> … </AttributeValue> </Attribute> </Subject> <Resource> <Attribute> <AttributeValue> … </AttributeValue> </Attribute> </Resource> <Action> <Attribute> <AttributeValue> … </AttributeValue> </Attribute> </Action> </Request> <Response> <Result> <Decision>…</Decision> <Status> <StatusCode …/> </Status> </Result> </Response> Risposta Richiesta - 18 - Attualmente XACML ACML è alla versione 2.0, ma è in fase di approvazione la nuova versione 3.0 che comprende una serie di miglioramenti riguardo nuove tipologie di profili, nuovi attributi e datatypes, meccanismi di delega ecc. Di seguito è riportato uno schema di interazione tra i componenti : - 19 - Capitolo 2 : Cooperazione Applicativa L’idea della realizzazione di un’infrastruttura che permetta l’interoperabilità tra le varie pubbliche amministrazioni italiane si concretizza nel 2005, con due progetti denominati, rispettivamente, SPC ed SPCoop. L’ente promotore dell’iniziativa è il CNIPA, Centro Nazionale per l’Informatica nella Pubblica Amministrazione, che definisce una serie di specifiche per la realizzazione di entrambi i progetti. Il primo è l’acronimo di Sistema Pubblico di Connettività, e riguarda la realizzazione di un’infrastruttura di rete privata che colleghi tutte le amministrazioni italiane. Il secondo, invece, è l’acronimo di Sistema Pubblico di Cooperazione, e riguarda la realizzazione di un’infrastruttura software che permetta la comunicazione e lo scambio di dati e/o informazioni tra i sistemi informativi delle varie amministrazioni. Per quanto i due progetti siano partiti insieme, viene da se che il completamento del primo è propedeutico al secondo, in quanto non ci può essere scambio di informazioni, se prima non c’è un canale di comunicazione che si fa carico del trasporto delle stesse. In questa tesi si analizzano soltanto le caratteristiche di SPCoop, perché oggetto di studio. Architetture SOA nella cooperazione applicativa Lo sviluppo delle architetture SOA ha dato un notevole impulso alla definizione delle specifiche del sistema SPCoop, in quanto, come si vedrà in seguito, rientrano appieno tutti gli elementi, precedentemente visti, che compongono tali architetture, ovviamente adattati per renderli più consoni al caso che si sta trattando. - 20 - Specifiche del CNIPA – Il progetto SPCoop Le specifiche pubblicate dal CNIPA riguardo il progetto SPCoop sono dieci, tutti documenti che definiscono il quadro tecnico – implementativo dell’intera infrastruttura. Gli elementi fondamentali che caratterizzano tale architettura sono : • Sistema informativo locale • Porta di dominio • Accordo di servizio • Servizi di registro SICA • Busta e-Gov Sistema informativo locale Nel seguito sarà definito SIL. Come si intuisce dal nome, è il componente attraverso cui si fa riferimento ai sistemi informativi di cui è dotata ciascuna pubblica amministrazione. Rappresenta quindi l’endpoint da cui si originano, rispettivamente, le richieste e le risposte per l’erogazione un servizio. A seconda dei casi, tale componente si definisce fruitore, se effettua una richiesta ad un altro componente; altrimenti, erogatore, se fornisce un servizio ad un altro SIL. Nell’ottica delle architetture SOA tali elementi non sono altro che dei servizi web che si scambiano messaggi in un formato XML “particolare”, così come vedremo più avanti. - 21 - Esempio di SIL all’interno dell’infrastruttura Porta di dominio Nel seguito sarà indicata con il termine PdD. Rappresenta l’unico punto d’ingresso nell’architettura SPCoop. E’ ad essa che vengono indirizzate tutte le richieste e le risposte provenienti dai SIL, pertanto svolge una funzione di gateway per tutti i messaggi in transito. Ogni dominio ne possiede una. Al suo interno è composta a sua volta da un’architettura complessa che svolge operazioni cosiddette di “imbustamento” e “sbustamento”, rispettivamente, delle richieste e delle risposte; tale funzionalità sarà descritta nel dettaglio più avanti. Oltre a queste due che sono le funzionalità principali della PdD, ci sono anche altre funzionalità secondarie, ma non meno importanti, quali la tracciatura del log dei messaggi in transito, la gestione della sicurezza del messaggio, la verifica dei livelli di qualità offerti dalla stessa porta ecc. I due elementi più importanti che compongono tale componente sono : la Porta Delegata (nel seguito PD) e la Porta Applicativa (nel seguito PA). Entrambe sono i punti che interfacciano i SIL con la PdD, e quindi con l’infrastruttura SPCoop. - 22 - La PD è l’elemento invocato dal SIL fruitore quando ha la necessità di usufruire di un servizio. I compiti che deve svolgere sono due : prendere in consegna la richiesta e trasformarla in un messaggio standard, conforme alle specifiche SPCoop, e viceversa, cioè far pervenire il messaggio di risposta al richiedente. La PA è invece incaricata di trasformare il messaggio, conforme alle specifiche SPCoop, in un formato conforme allo standard SOAP, e di far pervenire, quindi, la richiesta ad un SIL erogatore, ed il viceversa per la risposta. Anche in questo caso, dal punto di vista di SOA, sia la PD che la PA sono dei servizi web che inviano e ricevono messaggi da e verso altri servizi web, rappresentati dai SIL. Esempio delle porte di dominio all’interno dell’infrastruttura - 23 - Accordo di Servizio Di seguito AS, è a tutti gli effetti un contratto, in formato XML, tra fruitore ed erogatore, che definisce le modalità di erogazione e fruizione di un servizio. Le informazioni contenute in un AS sono : • tipo e funzionalità del servizio • schema dei messaggi di richiesta e risposta • requisiti di sicurezza • requisiti di qualità Ciascun AS si riferisce soltanto a due soggetti : l’erogatore ed il fruitore, il che significa che se un soggetto intende usufruire di servizi messi a disposizione da vari altri soggetti erogatori, deve stipulare un AS con ciascuno di essi. A causa di questo fenomeno, la ridondanza di informazioni comuni, all’interno di ciascun AS, potrebbe essere notevole, pertanto i documenti del CNIPA prevedono la suddivisione di ciascun accordo in due parti : la parte comune e la parte specifica. Nella parte comune sono riportate informazioni riguardanti il servizio, che pertanto possono essere riutilizzabili tra più accordi. La parte specifica, invece, prevede soltanto gli elementi caratteristici che differenziano ciascun accordo dagli altri, come, appunto, i soggetti erogatore e fruitore. Parte Comune Parte Specifica - 24 - Dal punto di vista tecnologico, un AS è composto da vari WSDL : WSDL Concettuale, WSDL Logico Fruitore e WSDL Logico Erogatore . Servizi di registro SICA Acronimo di Servizi di Interoperabilità, Cooperazione ed Accesso; sono, come dice la parola stessa, componenti che forniscono servizi di supporto alla cooperazione applicativa. Le attività che essi devono svolgere sono : la registrazione e la ricerca degli Accordi di Servizio e dei soggetti SPCoop, la gestione ed il monitoraggio dei livelli di servizio offerti, ecc. Le informazioni gestite riguardano quindi : • i soggetti che operano in SPCoop • i servizi erogati da tali soggetti • gli accordi di servizio per l’accesso ai servizi All’interno dell’architettura, tali componenti sono organizzati a livello gerarchico, infatti, è previsto un Registro SICA Generale, che contiene tutte le informazioni necessarie all’erogazione di servizi, e più Registri SICA Secondari, che, invece, contengono parte delle informazioni contenute su quello generale. Questo approccio è stato scelto perché permette di garantire una ridondanza delle informazioni, utile nel caso in cui qualche registro non sia disponibile, ed allo stesso tempo una rapidità nell’erogazione dei servizi, proprio grazie al fatto che solo una parte delle informazioni risiede su ciascun registro, snellendo quindi le attività di ricerca e registrazione. Nella specifica è previsto che ciascuna Porta di Dominio contatti il registro per ottenere informazioni circa i soggetti ed i servizi previsti nell’ Accordo di Servizio. - 25 - Esempio del registro SICA all’interno dell’infrastruttura Busta e-Gov Rappresenta il messaggio scambiato all’interno dell’architettura SPCoop tra PdD. Non è altro che un messaggio SOAP “elaborato”, cioè è un messaggio che mantiene la struttura prevista dallo standard SOAP 1.1 (un solo header ed un solo body), ma al cui interno vengono specificate informazioni aggiuntive, utili al trattamento ed all’elaborazione da parte delle varie PdD. Tale busta viene generata dalle stesse porte di dominio a seguito della trasformazione del messaggio di richiesta proveniente da un SIL. Eccone un esempio : <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <eGov_IT:Intestazione …> <eGov_IT:IntestazioneMessaggio> <eGov_IT:Mittente> <eGov_IT:IdentificativoParte …> </eGov_IT:Mittente> <eGov_IT:Destinatario> <eGov_IT:IdentificativoParte …> </eGov_IT:Destinatario> <eGov_IT:ProfiloCollaborazione>…</eGov_IT:ProfiloCollaborazione> <eGov_IT:Servizio …>…</eGov_IT:Servizio> <eGov_IT:Azione>…</eGov_IT:Azione> - 26 - <eGov_IT:Messaggio> <eGov_IT:Identificatore>…</eGov_IT:Identificatore> <eGov_IT:OraRegistrazione …>…</eGov_IT:OraRegistrazione> </eGov_IT:Messaggio> <eGov_IT:ProfiloTrasmissione …/> </eGov_IT:IntestazioneMessaggio> <eGov_IT:ListaTrasmissioni> <eGov_IT:Trasmissione> <eGov_IT:Origine> <eGov_IT:IdentificativoParte …> </eGov_IT:IdentificativoParte> </eGov_IT:Origine> <eGov_IT:Destinazione> <eGov_IT:IdentificativoParte …>…</eGov_IT:IdentificativoParte> </eGov_IT:Destinazione> <eGov_IT:OraRegistrazione …>…</eGov_IT:OraRegistrazione> </eGov_IT:Trasmissione> </eGov_IT:ListaTrasmissioni> </eGov_IT:Intestazione> </soap:Header> <soap:Body> … </soap:Body> </soap:Envelope> Come si può notare, tale messaggio è specifico per il dominio SPCoop, pertanto, risulterebbe non comprensibile per i SIL. E’ per questo motivo che, prima di essere inoltrato, è necessario che venga trasformato in un messaggio conforme allo standard SOAP, attraverso l’operazione di sbustamento. Tale operazione, assieme a quella di imbustamento, viene effettuata automaticamente dalla Porta di Dominio, nelle operazioni di inoltro dei messaggi di richiesta e di risposta, generati dai SIL, verso l’infrastruttura di cooperazione applicativa. Nello specifico, il messaggio originale, viene scomposto nella parte Header e nella parte Body. Le informazioni, contenute in ciascuna sezione, vengono inserite nelle relative sezioni Header e Body di un nuovo messaggio SOAP, conforme, però, al formato della busta e-Gov. Il motivo, per cui è necessario effettuare questa trasformazione, è che tale messaggio contiene informazioni aggiuntive utili al processamento dello stesso, da parte delle varie Porte di Dominio, durante il suo tragitto. Di seguito è riportata un’immagine dell’intera infrastruttura di cooperazione applicativa. - 27 - Vista globale dell’infrastruttura Requisiti di sicurezza del progetto Dal momento che i dati scambiati nell’ambito della cooperazione applicativa sono molto sensibili, è necessario garantire elevati livelli di sicurezza riguardo la gestione degli stessi.. Pertanto, in un’architettura distribuita di questo genere, è obbligatorio tenere in considerazione consid i seguenti requisiti : • Identificazione : stabilire univocamente chi sta richiedendo il servizio a cui si cerca di accedere • Autenticazione : stabilire senza dubbio che chi sta richiedendo il servizio sia veramente colui che afferma di essere • Autorizzazione : stabilire se il fruitore è autorizzato a richiedere lo specifico servizio - 28 - • Integrità : garantire che non ci siano state manomissioni nelle informazioni trasmesse • Confidenzialità : garantire che solo erogatore e fruitore del servizio abbiano visibilità sulle informazioni trasmesse • Tracciamento : mettere in atto meccanismi che permettano di tracciare qualsiasi evento legato all’erogazione/fruizione del servizio, in maniera da poter analizzare tali tracce per scoprire eventuali problemi • Non ripudio : permette di provare l'identità di coloro che hanno preso parte ad una determinata transazione Secondo le specifiche SPCoop, questi requisiti sono garantiti da tutti i componenti dell’infrastruttura, infatti, ad esempio, nella PdD, vengono garantiti : • Identificazione • Autenticazione • Autorizzazione • Confidenzialità • Non ripudio Inoltre, durante lo scambio di messaggi sia tra le Porte di Dominio che tra SIL e Porte Delegate, vengono utilizzate tecnologie opportune, quali : • HTTPS per il trasporto sicuro delle informazioni sul protocollo HTTP • WS-Security per la crittografia e la firma dei messaggi SOAP (tra SIL e Porte Delegate) e delle buste e-Gov (tra Porte di Dominio stesse e tra Porte di Dominio e NICA) - 29 - Capitolo 3 : Progetto ICAR Le specifiche di SPCoop si concretizzano attraverso il progetto ICAR, acronimo di Interoperabilità e Cooperazione Applicativa tra le Regioni. Tale progetto nasce come iniziativa, promossa dalle regioni, con il fine di rendere possibile, come dice il nome stesso, l’interoperabilità e la cooperazione applicativa tra gli organi aderenti. Inizialmente vi prendono parte soltanto sedici regioni italiane ed una provincia autonoma, ma nel seguito hanno aderito anche tutte quelle rimanenti. Il coordinamento delle attività è stato assegnato al CISIS, Centro Interregionale per i Sistemi Informatici, Geografici e Statistici, che tuttora cura le attività di bootstrap dell’intera infrastruttura sul territorio italiano e pianifica ulteriori sviluppi. Organizzazione del progetto Per una corretta realizzazione, il progetto è stato suddiviso in task infrastrutturali e task applicativi. I task infrastrutturali previsti sono tre e sono : • INF-1 : Infrastruttura di base per la Cooperazione Applicativa Interregionale • INF-2 : Gestione di Strumenti Interregionali di Service Level Agreement • INF-3 : Sistema Federato Interregionale di Autenticazione Tali task sono trasversali a tutto il progetto, in quanto definiscono l’infrastruttura sulla quale si baserà la cooperazione applicativa. I task applicativi, invece, sono sette, e caratterizzano specifici domini applicativi sottoforma di servizi SPCoop. Nello specifico sono : • AP-1 : Cooperazioni e Compensazioni Sanitarie Interregionali • AP-2 : Cooperazione tra sistemi di Anagrafe • AP-3 : Area Organizzativa Omogenea - 30 - • AP-4 : Lavoro e Servizi per l’Impiego • AP-5 : Tassa automobilistica automobili regionale • AP-6 : Osservatorio Interregionale sulla rete r distributiva dei carburanti • AP-7 : Sistema Informativo Interregionale Interregionale di Raccordo con Cinsedo Di seguito è riportato uno schema dell’organizzazione del progetto : Organizzazione del progetto ICAR Per ciascuno di questi task è stata individuata una regione, cosiddetta “capofila”, “c che ha il compito di sviluppare e rendere disponibile, nell’architettura SPCoop, il task assegnato. Quello della de Regione Basilicata è il task AP-1. OpenSPCoop La soluzione di riferimento per ICAR è rappresentata dal progetto OpenSPCoop (http://www.openspcoop.org/ ww.openspcoop.org/), ), un’implementazione open source delle specifiche del CNIPA. Comprende omprende tutti gli elementi architetturali, architetturali, quali : Porta di dominio, Registro SICA, ecc. E’ una soluzione che si basa sulla piattaforma J2EE ed utilizza come server applicativo JBOSS,, sfruttandone alcune funzionalità integrate, quali le code JMS (Java Message Service) e gli MDB (Message Message Driven Bean) ecc. Le altre tecnologie utilizzate sono JiBX ed AXIS per la realizzazione dei - 31 - web service. Il componente più importante e più complesso di tutta la soluzione è la Porta di Dominio, in quanto racchiude al suo interno tutti i meccanismi alla base del funzionamento di SPCoop. Di seguito è riportato uno schema della PdD SPCoop, estratto dalla documentazione ufficiale del progetto, che mostra proprio quanto sia complesso questo componente. Architettura della Porta di Dominio OpenSPCoop Il cuore è rappresentato dal modulo di controllo, che svolge funzioni molto importanti, come, ad esempio : • la gestione della sicurezza, in termini di autorizzazione e tracciamento dei messaggi in transito attraverso la PdD - 32 - • l’imbustamento imbustamento delle richieste, che consiste nel trasformare il messaggio SOAP proveniente dai SIL nel formato della busta e-Gov • lo sbustamento delle risposte, che consiste nell’attività contraria, cioè, trasformare la busta e-Gov e Gov nel messaggio SOAP interpretabile dai SIL Ovviamente si interfaccia con il registro dei servizi per acquisire le informazioni info necessarie al processamento mento delle richieste / risposte. Al fine di evitare la comunicazione punto – punto tra le varie PdD, in ICAR sono stati definiti dei componenti aggiuntivi, aggiuntivi non previsti revisti nelle specifiche SPCoop. Tali Tal componenti sono denominati NICA (Nodo Nodo di Interconnessione per la Cooperazione Applicativa). Applicativa Si tratta di PdD “evolute”, il cui scopo è quello di interconnettere diversi domini cooperanti tra loro. Con l’aggiunta di questo componente, l’architettura di SPCoop si trasforma nella seguente : Esempio di architettura SPCoop con NICA - 33 - Come si può osservare dall’immagine, l’adozione di tali componenti ha definito una struttura gerarchica, in cui ciascuna pubblica amministrazione ha una propria PdD. Tutte le PdD appartenenti ad un dominio afferiscono ad un unico NICA, il quale si preoccupa di instradare i messaggi agli altri NICA definiti per gli altri domini. FreESBee Si tratta di un progetto open source, alternativo ad OpenSPCoop, che nasce nel 2007, a seguito di una convenzione stipulata tra la Regione Basilicata e l’Università degli studi della Basilicata (http://freesbee.unibas.it/). L’obiettivo del progetto è quello di re implementare le specifiche definite dal CNIPA, attraverso soluzioni architetturali più snelle ed efficienti di quelle utilizzate per lo sviluppo di OpenSPCoop, in modo da rendere tutta l’architettura di cooperazione più snella e leggera. Dal punto di vista tecnologico, infatti, FreESBee utilizza come server applicativo Apache Tomcat, come tecnologie per il trasporto dei messaggi : ESB (Enterprise Service Bus), mentre per l’elaborazione e l’interfacciamento ai SIL attraverso i web service : CXF ed i componenti EIP (Enterprise Integration Pattern). Proprio grazie a questi ultimi, che rappresentano uno strumento innovativo sia nell’ambito della progettazione che in quello dello sviluppo, è stato possibile riprogettare gli elementi dell’architettura in maniera abbastanza rapida ed efficace. Il motivo di ciò deriva dal fatto che gli EIP definiscono una serie di pattern che rappresentano dei componenti elementari, una sorta di “mattoncini LEGO”, che possono essere collegati l’un l’altro. Ovviamente tali pattern definiscono soltanto una struttura scheletro, al cui interno dev’essere implementato il codice che permette di svolgere le funzionalità richieste. Ciascuno degli elementi, da un punto di vista logico, è rappresentato da un simbolo grafico; ciò significa che una volta collegati tra di loro, si può ottenere - 34 - anche una rappresentazione grafica dell’architettura realizzata, utilizzabile a scopo di documentazione ntazione. E’ secondo questi principi che è stata rivista e realizzata l’implementazione ’implementazione della PdD e degli altri componenti dell’architettura SPCoop. SPCoop. Ecco di seguito lo schema della PdD di freESBee riconcettualizzata : Vista globale della Porta di Dominio di FreESBee – Invio di una richiesta / risposta Nell’immagine immagine viene illustrato il percorso fatto da un messaggio di richiesta / risposta inviato da un SIL alla propria Porta di Dominio. Vengono descritti macroscopicamente i pattern che la compongono, compongono, senza entrare nel merito dei moduli di imbustamento e sbustamento, che a loro volta sono stati completamente riconcettualizzati. - 35 - Di seguito, invece, è riportato lo schema che descrive, sempre macroscopicamente, il percorso fatto dal messaggio precedente, precedente, quando arriva alla Porta di Dominio, per l’inoltro della risposta al SIL richiedente, oppure della richiesta al SIL erogatore. Vista globale della Porta di Dominio di FreESBee – Inoltro della risposta / richiesta Come nella soluzione SPCoop, anche in FreESBee,, il cuore di tutta la Porta di Dominio è rappresentato dai moduli di imbustamento e sbustamento. Non a caso nelle immagini precedenti, tali moduli sono stati raffigurati come semplici blocchi all’interno della PdD. In realtà essi hanno richiesto richiesto il maggior lavoro di riconcettualizzazione in termini di pattern EIP. Di seguito sono riportati gli schemi di dettaglio sia del modulo di imbustamento che di quello di sbustamento. - 36 - Vista di dettaglio dei moduli di imbustamento e sbustamento della PdD di FreESBee - 37 - Vista globale della Porta di Dominio di FreESBee – Invio di una richiesta / risposta A differenza dell’immagine utilizzata per descrivere la PdD di OpenSPCoop, il ruolo svolto da ciascun componente è reso, chiaramente, dal simbolo, dal nome e dalla descrizione definita per ciascun pattern. Questa è la dimostrazione del fatto che l’utilizzo di tali soluzioni può essere anche utile per fini di documentazione, facilmente interpretabile e comprensibile, senza la necessità di ricorrere alla stesura di documenti il più delle volte non chiari. Alla fine dei lavori, seguendo sempre questi stessi principi, sono stati realizzati i tre moduli software conformi alle specifiche dei rispettivi task infrastrutturali (INF-1, INF-2 ed INF-3), il test dell’intera architettura e lo sviluppo di un sistema per la simulazione dei SIL. - 38 - Capitolo 4 : Task INF-3 e relative implementazioni Il task infrastrutturale INF-3, nel progetto ICAR, prevede la realizzazione del “Sistema Federato Interregionale di Autenticazione”, con conseguente implementazione del paradigma di Single Sign On (SSO), che prevede, una volta effettuata l’autenticazione sul dominio, l’accesso a più risorse, senza dover ogni volta autenticarsi per ciascuna di esse. La regione capofila incaricata di ciò è il Piemonte, che ha definito una serie di specifiche, e rilasciato la Reference Implementation, di un sistema basato sulla gestione ed utilizzazione delle identità digitali all’interno del dominio di cooperazione. Per ciò che riguarda la documentazione prodotta, sono stati definiti : • Un modello logico di riferimento dell’infrastruttura interregionale di autenticazione ed autorizzazione • Un modello architetturale di riferimento del sistema federato interregionale di autenticazione • Una serie di specifiche che descrivono le interfacce interne ed esterne Una cosa molto importante da precisare è che nell’ambito dello scambio di informazioni tra PdD, attraverso buste e-Gov, si assume di disporre di un canale protetto, sicuro ed affidabile, in quanto INF-3 prescinde da questo, e si posiziona al livello superiore, garantendo i meccanismi per la cooperazione inter–dominio; mentre, al livello ancora superiore, i servizi cooperano in maniera del tutto trasparente. - 39 - Di seguito è riportato uno schema che mostra la pila infrastrutturale di ICAR appena descritta : Pila infrastrutturale di ICAR I componenti dell’architettura Un ruolo fondamentale all’interno del task è rappresentato dalle Autorità di certificazione, componenti dell’architettura a cui, per definizione, può essere data fiducia da parte di altre entità coinvolte nel processo di cooperazione, circa la veridicità delle informazioni prodotte. Quelle più importanti in ICAR sono prevalentemente tre : • Profile Authority : sono i componenti incaricati di gestire i profili degli utenti. Questo perché ciascun utente può possedere diversi profili, come, ad esempio, il profilo di impiegato del comune, attraverso il quale può accedere alle procedure interne per la risoluzione di pratiche, oppure, il profilo di cittadino, per accedere ai servizi per i cittadini messi a disposizione sempre dal comune • Certification Authority : sono i componenti che certificano l’identità di un - 40 - utente, previa autenticazione attraverso diverse tipologie di credenziali, come : nome utente e password, oppure codice fiscale e PIN ecc. • Attribute Authority : sono i componenti che certificano gli attributi contenuti nel profilo di un utente. Tali attributi vengono utilizzati durante il processo di verifica dell’autorizzazione all’accesso ad una risorsa. Un esempio di attributi sono : la mansione svolta, l’organizzazione presso cui si lavora, il titolo di studio ecc. Il formato delle informazioni rilasciate da tali autorità è conforme allo standard SAML 2.0, pertanto, per convenzione, esse vengono definite asserzioni. Ovviamente, proprio perché rilasciate da un’entità certificata e non da un elemento qualunque, esse sono considerate attendibili. Affinché un’entità di certificazione sia attendibile, ed evitare fenomeni secondo cui, una qualunque autorità possa certificare qualsiasi attributo, è obbligatorio, da parte dell’ente certificatore, apporre la propria firma digitale sugli attributi da esso rilasciati. Questo però non basta, in quanto è stata prevista l’esistenza di un organismo super partes, esterno al dominio, definito Garante, che è considerato a sua volta affidabile da parte delle varie autorità, e che appone anche la sua firma sulle certificazioni rilasciate, al fine di avere un più elevato livello di sicurezza. - 41 - Organizzazione delle varie autorità e relazioni con il Garante Altri due componenti importanti all’interno dell’architettura di INF-3 3 sono lo User Agent ed il Service Provider. Provider Il primo rappresenta gli utenti che interagiscono con il sistema, tipicamente un browser web, mentre il secondo rappresenta un generico fornitore di servizio, nonché l’elemento a cui spetta il compito di verificare se le informazioni fornite per l’accesso / erogazione del servizio sono coerenti e conformi ai requisiti di sicurezza stabiliti. Per la verifica dell’autenticazione ed autorizzazione, tale componente si avvale dell’ausilio di altri due componenti, l’Access l’ Manager (o Local Proxy) ed il Gestore delle Politiche di Autorizzazione. Autorizzazione. Il primo ha il compito di accedere alle varie autorità di certificazione, per ottenere la certificazione degli attributi giunti assieme alla richiesta; il secondo, invece, ha il compito di verificare che tali attribuiti siano s conformi ai requisiti richiesti per l’erogazione del servizio. Ovviamente all’interno - 42 - dell’infrastruttura è presente un registro, accessibile da tutte le comunità federate, che contiene l’URL delle varie PA, CA e AA. Lo scenario di riferimento Lo scenario di riferimento definito dalle specifiche è il seguente : tutto ha origine attraverso lo User Agent (in seguito UA), che richiede una risorsa al Service Provider (in seguito SP) il quale, come prima cosa controlla se lo UA è autenticato. Qualora non lo fosse, invia una richiesta di autenticazione al Local Proxy (in seguito LP), il quale a sua volta la rigira allo UA. A questo punto lo UA introduce le proprie credenziali e specifica qual è la Profile Authority (in seguito PA) desiderata. Tale risposta viene così inoltrata al LP, il quale interroga il registro per conoscere la URL della PA. Ottenuto l’URL, il LP interroga la PA per ottenere il nome della Certification Authority (di seguito CA) scelta dall’utente. Come prima, il LP interroga il registro per risolvere la URL della CA, ed una volta ottenuta l’informazione, inoltra a quest’ultima una richiesta di autenticazione, con la quale la CA inizia con lo UA la cosiddetta “challenge di autenticazione”. Al termine di questa fase il LP avrà acquisito un’ asserzione generata dalla CA che invia allo UA il quale a sua volta la gira al SP. A questo punto l’utente è autenticato e il SP è in possesso della relativa asserzione. Lo scenario procede con la verifica dell’autorizzazione. Il SP, come prima cosa, controlla se UA è autorizzato per l’accesso alla risorsa richiesta, e supponiamo che non lo sia. Come per l’autenticazione, il SP invia una richiesta al LP, il quale determina quale sia la PA che contiene il profilo utente. Quest’azione può essere compiuta in due modi : mantenendo una cache delle informazioni recuperate durante la fase di autenticazione, oppure richiedendo allo UA, durante l’operazione di autenticazione, di specificare qual è la PA da cui desidera farsi rilasciare gli attributi. Il LP chiede quindi alla PA il profilo dell’utente ed interroga il registro per conoscere l’ URL della / delle Attribute Authority (di seguito AA) specificate - 43 - nel profilo selezionato. A questo punto il LP richiede alle AA gli attributi per lo UA, e queste gli restituiscono le asserzioni con i relativi attributi. Il LP estrae le asserzioni e le invia all SP. SP. Quest’ultimo, ricevute le asserzioni, le valida rispetto alle politiche iche di accesso definite per il servizio, e se risultano essere coerenti, fornisce la risorsa richiesta. L’immagine seguente mostra l’interazione tra i vari componenti finora descritti : Interazioni nello scenario di riferimento di INF-3 INF Nel gergo di INF-3, 3, l’insieme di asserzioni raccolte dal LP, prende il nome di “portafoglio portafoglio di asserzioni”. asserzioni Lo scenario nella cooperazione applicativa Lo scenario di riferimento precedentemente descritto rimane inalterato anche nell’ambito dell’interazione in cooperazione applicativa, infatti, prima di effettuare una richiesta, si assume che il modello di INF-3 INF 3 abbia acquisito il - 44 - portafoglio delle asserzioni asserzioni relative all’utente richiedente, in termini di identità ed attributi, ed inserito tale elemento nella richiesta rivolta alla PdD. Una volta che tale richiesta è giunta a destinazione, essa risulta essere completa di tutte le informazioni necessarie per per la verifica e l’autorizzazione all’accesso delle risorse. Il fatto di avere il portafoglio delle asserzioni completo all’interno della stessa richiesta è un vantaggio notevole, in quanto non è necessario, in fase di verifica, prima dell’erogazione del servizio, servizio, consultare ulteriori autorità per sopperire ad eventuali dati mancanti. In questo modo si raggira il problema secondo cui, le stesse autorità, per poter fornire le informazioni richieste a causa di dati mancanti,, hanno bisogno a loro volta di verificare verificare l’autenticazione e l’autorizzazione del richiedente, ma quest’ultimo potrebbe non avere i privilegi sufficienti per accedere a tali informazioni, informazioni che riguardano,, quindi, un soggetto appartenente ad un dominio diverso, ottenendo così lo spiacevole risultato ris di non poter erogare il servizio. Di seguito viene riportata una rappresentazione di tale scenario : Scenario di integrazione di INF-3 INF all’interno di SPCoop - 45 - Come al solito tutto lo scenario lo innesca lo UA, che contatta un Service Provider del dominio richiedente (di seguito SPDR), che in questo caso rappresenta il front-end con cui lavora l’operatore. Quest’ultimo accede all’infrastruttura di autenticazione e autorizzazione del proprio dominio per verificare che l’utente abbia diritto all’accesso. Per fare questo interroga il componente GPADR, che accede al profilo del servizio e passa il controllo al LPDR, che a sua volta contatta i vari certificatori, costruisce il portafoglio delle asserzioni e lo restituisce al GPADR. Il GPADR, sulla base delle informazioni contenute nel portafoglio, può effettuare il policy enforcement ed abilitare l’utente all’accesso al SPDR, a cui trasmette l’intero portafoglio delle asserzioni. Il messaggio giunge così alla PdDDR, e da questa alla PdDDE (dominio erogatore). Per il transito tra la PdDDR e la PdDDE il messaggio viene dapprima criptato e firmato, rispettando lo standard WS-Security, e successivamente affidato al livello infrastrutturale INF-1 per il trasporto su canale sicuro HTTPS. Una volta giunto alla PdDDE, il messaggio viene prima decriptato, verificata la firma, e se è valido viene inoltrato al SPDE. Quest’ultimo richiede al sistema federato di autenticazione e autorizzazione INF3 un controllo sull’identità e sul ruolo del richiedente, passando il portafoglio delle asserzioni al GPADE, il quale effettua il policy enforcement utilizzando le asserzioni contenute nel portafoglio giunto assieme alla richiesta. Dal momento che gli attributi sono controfirmati dal Responsabile del Dominio di Cooperazione, il GPADE attribuisce il corretto valore e fiducia ad essi. A questo punto, se i dati ricevuti lo consentono, il GPADE comunica a SPDE che il richiedente è abilitato ad usufruire del servizio. Per come è strutturata l’architettura, ora il richiedente di SPDE è il SPDR e non più lo UA. Ciò significa che nel portafoglio delle asserzioni ricevuto, il policy enforcement sarà effettuato sulle asserzioni relative a SPDR. - 46 - Eseguito il servizio, ha ora inizio l’interazione del flusso dei messaggi di risposta, ovviamente nella direzione opposta a quella attualmente descritta, ma secondo le stesse modalità, facendo infine pervenire tale risposta allo UA che ha avviato l’interazione. Tecnologie di riferimento Riguardo alle tecnologie utilizzate per la realizzazione del task, nelle specifiche si fa riferimento a : • standard SAML 2.0 per l’incapsulamento del portafoglio di asserzioni nel messaggio SOAP • standard XACML per la verifica e la validazione dei requisiti di autorizzazione rispetto alle politiche di accesso ai servizi • standard WS-Security per la crittografia dei dati e la firma dei messaggi inviati Reference Implementation L’implementazione di riferimento del task INF-3 (di seguito RI) è stata rilasciata dalla regione Piemonte a maggio del 2008. Essa è conforme alle specifiche SAML 2.0, pertanto prevede l’interazione con tutte le entità classiche di una federazione basata su tale standard, che, come già detto precedentemente, sono: • Profile Authority (PA) • Identity Provider (IdP) • Attribute Authority (AA) • Service Provider (SP) Da notare che tale RI non fornisce queste autorità, in quanto assume che ciascun dominio sia già in possesso delle stesse. Inoltre, coerentemente con quanto - 47 - definito nelle specifiche ICAR, sono state implementate due nuove entità, che sono : il Local Proxy (LP) e l’ Authority Registry (AR). L’unico componente visto finora, che nella terminologia di SAML assume una denominazione differente, è l’ Identity Provider. Con tale nome, infatti, si intende fare riferimento alla Certification Authority che rilascia le attestazioni sull’identità degli utenti. E’ stato ampliamente trattato e descritto in precedenza il compito svolto dal LP, mentre risulta completamente nuovo il ruolo dell’ AR. Essa è l’entità, di cui si è brevemente parlato prima, accessibile da tutte le federazioni, che mantiene il registro con gli URL delle varie PA, IdP ed AA. Grazie all’introduzione del componente LP, ed al fatto che tale implementazione è conforme allo standard SAML 2.0, è possibile avere l’interazione tra la RI ed altre soluzioni, siano esse open source o commerciali, che forniscono le autorità necessarie alla realizzazione di un sistema federato. Questa è una cosa voluta, sia per non vincolare la scelta delle autorità ad una particolare soluzione, permettendo quindi ai singoli domini di utilizzare le authority che risultano essere più idonee alle specifiche esigenze; sia perché, allo stato attuale, alcuni domini possono essere già provvisti di tali elementi, il che significa quindi che è già possibile operare in un ambiente federato, senza dover modificare o adattare alcunché, rendendo così indolore l’adozione del sistema di autenticazione ed autorizzazione federato per l’accesso alla cooperazione applicativa. Purtroppo, il punto cruciale di tutta l’architettura è rappresentato proprio dalle authority, infatti è su di esse che si basa tutto il funzionamento del task INF-3. Come già detto, nella Reference Implementation si assume che ciascun dominio sia già provvisto di tali entità, tuttavia, per fornire una implementazione funzionante, sono state rilasciate anche delle authority “giocattolo”, senza alcun - 48 - valore legale, che simulano il funzionamento delle corrispettive reali. Sono inoltre stati allestiti degli esempi, che mostrano il funzionamento dell’architettura fin qui descritta. Di seguito sono riportati degli screenshot dell’esempio predisposto nella RI : Servizi resi dal Service Provider di esempio della Reference Implementation - 49 - Esempio di inserimento delle credenziali e scelta del profilo - 50 - Tecnologie di riferimento La Reference Implementation è stata rilasciata sotto licenza open source. Dal punto di vista tecnologico, è stata realizzata utilizzando la piattaforma Java JDK 1.5 ed il framework, anch’esso open source, OpenSAML 2.0 (http://www.opensaml.org). Come server applicativo è stato utilizzato Tomcat 5.5.20, mentre, per le interfacce di esempio, la tecnologia JSF (Java Server Faces). Integrazione nell’architettura SPCoop Il punto debole della Reference Implementation di INF-3 è rappresentato dal fatto che è impossibile effettuare dei test con gli esempi forniti a corredo del rilascio, in quanto questi sono statici, cioè, possono essere eseguiti soltanto così come vengono forniti, non è possibile apportare nessuna modifica, se non quelle che riguardano gli attributi degli utenti registrati sulle finte authority. Questo pone un vincolo non banale, sia alla comprensione del funzionamento dell’interazione tra i vari task infrastrutturali, e tra questi ed i task applicativi, sia alla sperimentazione dell’intera infrastruttura di cooperazione applicativa, in quanto, se non previsti, non possono essere aggiunti dinamicamente altri componenti, come SP, IdP ecc. Ciò significa, quindi, che per avere l’implementazione di INF-3 realmente funzionante, è necessario modificare i SIL in modo tale che implementino la logica del SP, e siano così in grado di acquisire il portafoglio di asserzioni, prima dell’invio di una richiesta di esecuzione di un servizio, oppure di validarlo prima di generare la risposta relativa. Ciò significa che una reale sperimentazione di tutta l’architettura ICAR potrà essere fatta soltanto quando tali modifiche saranno effettuate, il che richiederà qualche anno, in quanto i SIL in questione, soprattutto nel caso della pubblica amministrazione, sono i sistemi informativi su cui si basano tutte le procedure burocratiche ed amministrative che governano l’ente, il cui processo di modifica non è una cosa banale e soprattutto rapida. - 51 - FreESBee-SP Nell’ambito del progetto FreESBee, il componente che si occupa di implementare le specifiche dettate da ICAR, per la realizzazione del sistema federato di autenticazione, è FreESBee-SP. Come per la Reference Implementation, ovviamente, l’utilizzo di tale modulo è subordinato alla realizzazione di un’infrastruttura di authority, con le quali esso interagisce, per l’acquisizione delle informazioni che permettono di descrivere l’utente. La differenza, come si vedrà più avanti, è data dal fatto che viene fornita un’implementazione reale di tali componenti, ovviamente senza nessun valore legale, in modo da poter effettuare una sperimentazione “sul campo” dell’intera infrastruttura federata. Dal punto di vista logico, tale soluzione è un wrapper, che agisce come intermediario tra i SIL e la porta di dominio, ed è in grado di comunicare con i primi, in maniera interattiva oppure in maniera automatica. Nel primo caso, richiedendo esplicitamente le credenziali all’utente, mentre, nel secondo caso, specificando opportuni parametri nella query string. Grazie a questo meccanismo, FreESBee-SP si presta molto bene ad essere utilizzato sia nella fase di fruizione, che in quella di erogazione di un servizio, infatti, dal lato fruitore, si occupa della raccolta delle informazioni circa l’identità del richiedente e del relativo portafoglio di asserzioni; dal lato erogatore, invece, si occupa della validazione di tali informazioni, rispetto alle policy definite per l’accesso e/o erogazione di ciascun servizio. Tali policy vengono dichiarate nella parte specifica dell’accordo di servizio, che a sua volta risiede sul NICA. E’ perciò con tale componente, più precisamente con il registro dei servizi, che FreESBee-SP collabora per l’acquisizione delle policy e la validazione del portafoglio di asserzioni. - 52 - Quanto appena detto è riassunto nello schema seguente : Inte Integrazione di FreESBee-SP nell’architettura SPCoop La posizione, sizione, ricoperta da tale modulo, offre il duplice vantaggio di : • lasciare inalterati i sistemi informativi già abilitati all’interazione attraverso web service, rendendo quindi immediato lo start-up start dell’infrastruttura federata • modificare i sistemi già presenti, non abilitati all’interazione attraverso web service, prescindendo dalle problematiche proprie del componente service provider, e quindi dalla dalla raccolta e validazione degli attributi In entrambi i casi il tutto si trasforma in un risparmio, risparmio in termini mini sia di tempo che di costi di sviluppo / adattamento. adattamento - 53 - Come ome strumenti di supporto a FreESBee-SP, sia per il test che per la realizzazione del sistema federato, si è ricorso ad altri due progetti open source : SIL-VIO e Shibboleth. Progetto SIL-VIO SIL-VIO è l’acronimo di Sistema Informativo Locale Virtuale per l’InterOperabilità. l’Inter Nasce nell’ambito del progetto FreESBee come strumento di test open source per l’architettura SPCoop, con l’obiettivo di simulare il tipico funzionamento di un SIL. Per talee motivo, quindi, l’architettura di SIL-VIO SIL VIO è stata sviluppata per essere modulare, e permetterne l’utilizzo in vari scenari applicativi. applicativi Attraverso questo strumento è infatti possibile simulare i più disparati sistemi, da quelli legacy, fino a quelli più avanzati. Il punto di forza su cui si basa è un articolato motore di trasformazioni che, a partire dai dati, è in grado di generare un messaggio SOAP di richiesta conforme alle specifiche; specifiche e viceversa, cioè, data una richiesta, effettuare delle operazioni (come una interrogazione o un inserimento nel DB) e produrre la relativa risposta. I dati per la generazione della richiesta possono essere sere forniti in modo differente: differente • prelevati automaticamente da un DB attraverso una query • richiesti interattivamente all’utente all’u • dichiarati come costanti Eccone uno schema : Schema della generazione di un messaggio SOAP di richiesta - 54 - Schema della generazione di un messaggio SOAP di risposta Seguendo la linea di sviluppo con cui è stato implementato il progetto FreESBee, anche in questo caso è stato utilizzato l’approccio di EIP, per la realizzazione delle operazioni che portano alla creazione di un messaggio di richiesta, all’elaborazione, ed alla produzione produz del messaggio di risposta. Ecco di seguito la rappresentazione dell’architettura con cui è stato concepito SIL-VIO : Pattern EIP nell’architettura di SIL-VIO - 55 - Progetto Shibboleth Shibboleth è un progetto open source sviluppato dal consorzio Internet2 (http://shibboleth.internet2.edu/). L’obiettivo per cui è nato è quello di permettere la condivisione e l’accesso, attraverso meccanismi di Single Sign On, ai contenuti didattici riservati ed a pagamento, messi a disposizione dalle università. Con il tempo si è evoluto, e grazie all’adozione di standard quali SAML per l’identificazione e l’accesso, si è rivelato utile anche in altri contesti. Ad oggi, infatti, risulta essere una soluzione di riferimento, una sorta di standard “de facto”, soprattutto nel campo della pubblica amministrazione. Tale soluzione è del tutto conforme con le specifiche di ICAR, in quanto prevede l’interazione con vari tipi di componenti, quali : l’Identity Provider, il Service Provider e lo User Agent. E’ inoltre previsto un altro servizio, cosiddetto, WAYF (Where Are You From), che si occupa della ricerca degli attributi tra le varie authority, in base al profilo che l’utente ha scelto di utilizzare. Ovviamente questi componenti sono tutti reali ed indipendenti l’uno dall’altro; l’interazione tra essi è descritta dalla seguente immagine : Interazione tra i componenti di Shibboleth - 56 - Per ciò che riguarda l’Identity Provider, può essere configurato per accettare modalità di autenticazione di tipo Basic; basata su database relazionali; su directory LDAP o interfaccia web. L’Attribute Authority, invece, può essere configurata solamente per acquisire informazioni da una directory LDAP, da cui prelevare gli attributi definiti per l’utente. FreESBee-SP si interfaccia con Shibboleth per gestire tutto il meccanismo di autenticazione ed acquisizione del portafoglio di asserzioni. Per la precisione, interagisce principalmente con il componente SP, che, in riferimento alle specifiche ICAR, ingloba al suo interno il funzionamento sia del Local Proxy che del Service Provider stesso. Il punto di forza di tale soluzione è che il SP è in grado di interfacciarsi a qualsiasi Identity Provider ed Attribute Authority, purché queste siano conformi allo standard SAML. Grazie a questo approccio, ed al fatto che le componenti sono tutte indipendenti, è possibile supporre vari scenari : • usare soltanto il componente SP qualora i domini siano già in possesso di proprie authority • implementare una propria authority, opportunamente certificata, basata su IdP e AA di Shibboleth • adottare IdP e AA di Shibboleth per soli scopi di test Quest’ultima ipotesi è stata utilizzata allo scopo di testare il funzionamento di tutta l’architettura ICAR. Scenario in cooperazione applicativa Fino ad ora è stato solo descritto il funzionamento di FreESBee-SP, l’interazione che ha con i moduli degli altri progetti e dove esso si posiziona all’interno dell’architettura ICAR / SPCoop. Di seguito viene analizzato un classico scenario - 57 - di utilizzo in cooperazione applicativa. Per una migliore comprensione, tale scenario, è suddiviso in due fasi : • la generazione zione di una richiesta da parte del dominio fruitore • la verifica delle autorizzazioni e relativa erogazione del servizio nel dominio erogatore Prima di passare alla descrizione viene riportato di seguito lo schema di riferimento con le relative interazioni nel dominio fruitore : Schema delle interazioni nel dominio fruitore Come già detto in precedenza, l’avvio del caso d’uso di richiesta di erogazione di un servizio, può essere effettuato interattivamente, da parte di un utente che agisce su un sistema informativo, oppure, automaticamente, da parte del sistema informativo stesso, per per completare una certa elaborazione. Con FreESBee-SP SP è possibile eseguire entrambe le modalità, tuttavia, per - 58 - differenziare l’una dall’altra si è scelto di utilizzare come terminologia : “utente” quando il caso d’uso viene avviato da un utente ed eseguito interattivamente, altrimenti, “agente”, quando il caso d’uso viene avviato da un sistema informativo ed eseguito in modalità automatica. In entrambi i casi, il passaggio dall’applicazione del SIL a FreESBee-SP, e viceversa, avviene attraverso il meccanismo dei redirect. E’ ovvio che in base alla modalità scelta, è necessario fornire a FreESBee-SP informazioni differenti, in quanto anche le operazioni che deve eseguire sono diverse. Se si utilizza la modalità utente, per accedere all’interfaccia per l’inserimento delle credenziali, è necessario fornire opportuni parametri attraverso la query string, che sono : • Modalità di autenticazione (UTENTE / AGENTE) • L’URI di destinazione, cioè l’URI a cui FreESBee-SP deve redirigere l’utente a seguito della raccolta del portafoglio di asserzioni • L’ID della sessione avviata sul SIL a cui riagganciarsi dopo aver raccolto il portafoglio • L’URI della risorsa protetta a cui si intende accedere Un esempio di richiesta inviata dal SIL a FreESBee-SP è il seguente : https://hostFreesbeesp:8443/freesbeesp/schermoLogin.faces?autenticazione=U TENTE&uriDiDestinazione=/silvio/eseguiIstanzaOperation.faces&silSessionId=05 B99142ACD21DD9CC76124DA5FB5AAE&risorsa=https://sp.example.unibas.org/ PD_PUBBLICAZIONE_VARIAZIONE_ANAGRAFICA/ A questo punto l’utente può inserire le proprie credenziali effettuando così l’accesso al meccanismo di SSO. - 59 - Esempio di procedura di login per l’acquisizione del portafoglio di asserzioni FreESBee-SP estrae dai parametri ricevuti attraverso la query string l’URI della risorsa protetta a cui si vuole accedere, ed assieme alle credenziali, inoltra la richiesta al componente SP di Shibboleth, come se fosse lui a richiederlo in prima persona. Il SP di Shibboleth, attraverso il LP interno, e se configurato, con l’ausilio del servizio WAYF, si incarica di raccogliere il portafoglio di asserzioni e farlo validare al SP. Quest’ultimo, in base alle politiche definite per l’accesso al servizio, può decidere se autorizzare l’erogazione o meno. La decisione presa dal SP viene rimandata all’utente, che, in caso di mancanza di requisiti, vedrà un messaggio che lo informa di ciò, altrimenti, sarà automaticamente rediretto sul sistema informativo del SIL per continuare ad eseguire il caso d’uso. In caso di esito positivo, cioè se l’utente è correttamente autenticato ed autorizzato ad accedere ad un servizio, FreESBee-SP mantiene, per suo conto, il portafoglio di asserzioni acquisito durante il primo accesso, in modo che, per accessi successivi - 60 - non sarà necessario fornire nuovamente le credenziali. Ovviamente, tali informazioni, vengono mantenute per un periodo di tempo limitato alla durata della sessione avviata dal SIL su FreESBee-SP. Esempio di portafoglio di asserzioni acquisito correttamente Nella redirezione verso l’applicazione del SIL, anche FreESBee-SP invia dei parametri attraverso la query string, che sono : freesbeeSPSessionId e jsessionid. Il primo verrà descritto più avanti, mentre il secondo serve all’applicazione per recuperare la sessione precedentemente avviata con l’utente. Un esempio di redirect da FreESBee-SP all’applicazione SIL è il seguente : https://hostSilvio:8443/silvio/eseguiIstanzaOperation.faces;jsessionid=05B99142 ACD21DD9CC76124DA5FB5AAE?freesbeeSPSessionId=5R2821R6WGHQ76O9YC H6JJ1FA4FB4ETI - 61 - Da notare che non viene inviato al SIL il portafoglio di asserzioni acquisito, ma rimane solamente in FreESBee-SP. Nel momento in cui l’utente ha terminato le proprie operazioni, e deve inoltrare la richiesta, per ottenere l’erogazione di un servizio da un altro dominio, non la inoltra direttamente alla porta delegata della propria porta di dominio, in quanto tale messaggio è sprovvisto del portafoglio, bensì la inoltra nuovamente a FreESBee-SP, il quale si occupa di aggiungere al messaggio SOAP il portafoglio di asserzioni precedentemente acquisito ed inviarla, per suo conto, alla PD. Un esempio dell’URI a cui il SIL inoltra la richiesta da inviare alla porta delegata è il seguente : https://hostFreesbeesp:8443/freesbeesp/forwardToPD.post;jsessionid=5R2821R 6WGHQ76O9YCH6JJ1FA4FB4ETI In tal caso, l’unico parametro è jsessionid, che serve a FreESBee-SP per risalire alla sessione precedentemente avviata dal SIL e prelevare da essa il portafoglio delle asserzioni. Nella modalità agente, il comportamento è simile a quello appena descritto. Ciò che cambia sono i parametri passati attraverso la query string e la modalità di interazione tra SIL e FreESBee-SP, in quanto, avviene tutto in un’unica richiesta. In questo caso, infatti, è necessario fornire : • Modalità di autenticazione (UTENTE / AGENTE) • L’URI della risorsa protetta a cui si intende accedere • Credenziali dell’agente che effettua la richiesta, sottoforma di username e password Come già detto poco fa, tutte le operazioni precedentemente descritte, vengono svolte a seguito di un’unica richiesta, da parte dell’applicazione SIL, contenente - 62 - già il messaggio che la stessa deve inviare alla porta di dominio. FreESBee-SP, FreESBee sapendo che è un agente gente a farla, esegue per suo conto la richiesta di autenticazione al SP di shibboleth, che a sua volta attiva tutta la procedura per la raccolta delle asserzioni e la validazione delle stesse. Se risultano valide, il portafoglio viene memorizzato nella sessione, sessione, per usi futuri, immesso nel messaggio di richiesta ed inviato alla porta delegata; altrimenti, la richiesta viene rigettata, ed al SIL viene inviato un messaggio di errore. L’esempio dell’URI a cui il SIL, in modalità agente, invia la richiesta è : https://hostFreesbeesp:8443/freesbeesp/schermoLogin.faces?autenticazione=A https://hostFreesbeesp:8443/freesbeesp/schermoLogin.faces?autenticazione=A GENTE&risorsa=PD_NOTIFICA _NOTIFICA&username=agentege&password=agentege agentege Dal lato erogatore le cose cambiano, in quanto FreESBee-SP FreESBee si trova a svolgere il compito di vero e proprio Service Provider, e decidere sull’erogazione o meno di un servizio. Anche in questo caso, prima della descrizione, viene riportato lo schema che descrive l’interazione all’interno del dominio erogatore : Schema delle interazioni nel dominio erogatore - 63 - Ricevuto il messaggio SOAP di richiesta, come prima cosa, FreESBee-SP ne estrae il portafoglio di asserzioni. Tale portafoglio è in formato SAML 2.0, perciò, l’azione successiva, è quella di trasformarle in asserzioni conformi allo standard XACML. Una volta trasformate, le sottopone al Policy Decision Point interno, che le valida rispetto alle policy definite nell’accordo di servizio e memorizzate nel registro dei servizi sul NICA. La decisione presa dal PDP viene poi inoltrata al Policy Enforcement Point, anch’esso interno, che, in caso di permesso accordato, si occupa di inoltrare la richiesta verso il SIL per l’erogazione del servizio, altrimenti, genera un messaggio di errore, che effettua a ritroso lo stesso percorso fatto dalla richiesta, fino ad arrivare al SIL richiedente. Come si può notare dalla descrizione appena fatta, la validazione e la verifica delle credenziali e degli attributi, avviene sia nel dominio fruitore, che in quello erogatore. Questo, se da un lato aggiunge un overload all’interno dell’architettura, soprattutto dal lato erogatore, a causa del numero di verifiche in più che è necessario effettuare per ciascun messaggio in transito, dall’altro fornisce una maggiore sicurezza al sistema, garantendolo anche da eventuali errori e/o omissioni nella definizione della policy nell’uno o nell’altro dominio. Configurazione delle istanze I parametri passati attraverso la query string servono solo per gestire l’interazione con le applicazioni dei SIL e l’acquisizione del portafoglio di asserzioni. Per poter funzionare, è necessario che FreESBee-SP sia opportunamente configurato, per esporre ai SIL i web service da contattare per inviare richieste di cooperazione applicativa in un ambiente federato. Il processo di configurazione è molto semplice e consiste di due operazioni : • Configurazione dell’URI del registro dei servizi - 64 - • Configurazione di nuove istanze La configurazione del registro dei servizi è unica per tutto il dominio d’interesse. Consiste nella sola definizione dell’URI a cui risponde tale componente : Esempio di configurazione dell’URI del registro dei servizi Anche la configurazione delle istanze è altrettanto semplice, infatti consiste nella definizione di : • Nome dell’accordo di servizio • URI della risorsa a cui accedere, generalmente la Porta Delegata • URI di ascolto, cioè dell’URI su cui FreESBee-SP deve avviare un nuovo endpoint e rimanere in ascolto di richieste. - 65 - Esempio di configurazione di un’istanza Tecnologie di riferimento Dal punto di vista tecnologico, FreESBee-SP è stato realizzato utilizzando la piattaforma JAVA, con l’ausilio dei framework open source OpenSAML 2.0 e Sun XACML, mentre, come server applicativo, utilizza Tomcat. Per quanto riguarda l’interfaccia, invece, è stata realizzata con la tecnologia JSF ed il framework Richfaces. - 66 - Capitolo 5 : Sperimentazione dell’architettura SPCoop La conclusione delle attività ha visto la realizzazione di una sperimentazione, completa, dell’intera architettura SPCoop, attraverso l’uso dei componenti del progetto FreESBee (porta di dominio, gestore eventi e sistema federato), con l’ausilio del sistema SIL-VIO. Non è stato possibile condurre un’analoga sperimentazione con i componenti dei rilasci ufficiali di ICAR, in quanto, al momento, gli unici moduli in grado di interoperare sono la porta di dominio ed il sistema di verifica dei livelli di servizio (SLA – Service Level Agreement), cioè i task infrastrutturali INF-1 ed INF-2. La Reference Implementation di INF-3, sia per i motivi citati nel capitolo precedente, sia perché è l’ultimo componente ad essere stato rilasciato, risulta essere, al momento, un modulo indipendente, non integrabile all’interno dell’architettura SPCoop, a meno che non si disponga, all’interno del dominio, dei componenti necessari al suo funzionamento (Identity Provider, Attribute Authority e Service Provider). Gli scopi di questo test sono vari, primo fra tutti, quello di analizzare le interazioni che avvengono tra i task infrastrutturali; quello di chiarire alcuni punti critici, non completamente spiegati nelle specifiche ICAR / SPCoop; quello di verificare il carico di lavoro gestibile dai vari componenti, al fine di ottenere un’indicazione reale delle caratteristiche dei dispositivi hardware di cui è necessario dotarsi. L’architettura di test ha richiesto il dispiegamento di 11 macchine, di cui tre server fisici ed otto virtuali, per la simulazione di due domini distinti : quello della Regione Basilicata e quello della Regione Sicilia. Il sistema operativo utilizzato sulle macchine fisiche è Ubuntu Desktop, mentre, su quelle virtuali, è Ubuntu Server. - 67 - Di seguito lo schema rappresentativo : Architettura di test dei componenti del progetto ICAR Gli scenari che sono stati simulati sono una rappresentazione generale dei possibili casi d’uso che saranno eseguiti in cooperazione applicativa. Dal momento che la Regione Basilicata è la capofila del task applicativo AP-1, Cooperazioni e Compensazioni Sanitarie Interregionali, è stata data maggiore enfasi alle tematiche sulla sanità, inscenando la cooperazione tra il dominio della regione Basilicata e quello della regione Sicilia. I casi d’uso simulati sono tre, nello specifico : • Identificazione assistito • Segnalazione ricovero • Variazione anagrafica - 68 - Il caso d’uso “Identificazione assistito” Lo scenario mostra un semplice esempio di richiesta ed erogazione di un servizio in cooperazione applicativa, mostrando l’interazione tra i task infrastrutturali INF-1 ed INF-3. Viene simulato il caso in cui un cittadino, di nome Mario Rossi, si presenta al pronto soccorso dell’Ospedale San Carlo di Potenza per un ricovero. Per avviare tale procedura è necessario registrare i dati di Mario nel sistema informativo dell’ospedale. Mario è un cittadino afferente all’ASL di Catania, pertanto l’operatore del Pronto Soccorso dell’Ospedale di Potenza, Michele Feltri, per conoscere i dati anagrafici di Mario, effettua una richiesta alla sua ASL di appartenenza, cioè l’Ospedale di Catania. Lo schema che descrive questo caso d’uso è il seguente : Schema del caso d’uso Identificazione Assistito Le operazioni svolte sono le seguenti : 1. L’operatore Michele Feltri, del’Ospedale di Potenza, accede alla procedura di ricovero del paziente Mario Rossi, attraverso la funzionalità messa a disposizione dal Sistema Informativo Locale. Dal - 69 - momento che è un’azione che si svolge in cooperazione applicativa (a prescindere se avviene all’interno del dominio, oppure tra domini differenti), la prima volta che l’operatore accede, deve fornire le proprie credenziali al modulo preposto all’autenticazione federata, FreESBee-SP. Le operazioni di verifica dell’identità e validazione del portafoglio di asserzioni, sono state analizzate nel dettaglio nel capitolo precedente. 2. Se l’autenticazione va a buon fine, l’operatore può procedere al ricovero del paziente. Nel video è possibile vedere chiaramente il redirect che porta dall’applicazione SIL con cui l’operatore interagisce per richiedere il ricovero, a FreESBee-SP per l’inserimento delle credenziali, e da quest’ultimo, nuovamente al SIL. A questo punto l’operatore può continuare con l’esecuzione del caso d’uso, inserendo il codice fiscale del paziente per ottenere i suoi dati anagrafici. Inizialmente la ricerca viene effettuata localmente, ma dal momento che Mario Rossi è afferente all’ospedale di Catania, non risulta essere presente nel database del SIL dell’ospedale di Potenza. Questo non è un problema, in quanto è possibile comunque procedere alla registrazione del ricovero, specificando : il codice fiscale, l’ASL di appartenenza e i dati relativi al ricovero. Questa operazione scatena l’invio di una richiesta in cooperazione applicativa dei dati anagrafici di Mario Rossi. Il messaggio, contenente tale richiesta, viene inoltrato a freESBeeSP, che lo arricchisce del portafoglio SAML dell’operatore Michele Feltri e lo inoltra alla porta di dominio. - 70 - Registrazione del ricovero 3. Il messaggio, dal formato SOAP viene trasformato nel formato e-gov, viaggia attraverso l’architettura e arriva alla porta di dominio della Sicilia. Qui viene “sbustato”, cioè viene trasformato da busta e-gov in messaggio SOAP ed inoltrato di nuovo al componente freesbeeSP, questa volta del dominio della Sicilia, che lo valida rispetto alle policy definite per l’accesso a quel servizio, e, se conforme, lo invia al SIL dell’Ospedale di Catania. 4. Prima di procedere alla produzione della risposta, siccome tutti i componenti, all’interno dell’architettura, sono sottoposti a verifica e controllo del rispetto dei requisiti di qualità imposti dalle specifiche, come prima cosa, il SIL dell’Ospedale di Catania, dopo aver ricevuto la richiesta, si autentica presso il sistema di autenticazione federata come “AGENTE”, ed effettua la tracciatura del servizio sul modulo degli SLA. Successivamente, procede all’elaborazione della richiesta, produce la relativa risposta ed invia il messaggio, con i dati anagrafici, nuovamente alla porta di dominio. Questo riattraversa l’architettura a ritroso fino a giungere al SIL richiedente, che registra i dati di Mario - 71 - Rossi nel proprio archivio. Da questo momento in poi, tali dati, saranno presenti anche nel database dell’Ospedale di Potenza. Dati del paziente ottenuti con una richiesta in cooperazione applicativa - 72 - Il caso d’uso “Segnalazione ricovero” E’ una naturale prosecuzione di quello precedente, in cui, l’ospedale di Potenza, segnala l’avvenuto ricovero a quello di Catania. Mostra l’interazione tra i task infrastrutturali INF-2 ed INF-3 per la verifica degli SLA. Tale processo è analogo al precedente, infatti, c’è l’impiegato della regione Sicilia, il cui nome è Giulio Greco, che effettua un controllo sul soddisfacimento dei livelli di qualità di tale servizio. Per poter accedere all’interfaccia di verifica degli SLA, si autentica attraverso il sistema di autenticazione federata come “UTENTE” (lo stesso vale anche per l’operatore Michele Feltri menzionato prima). Prima dell’invio della notifica da parte dell’ospedale di Potenza, il servizio risulta essere attivo, ma lo SLA relativo al tempo medio di risposta risulta essere non soddisfatto. Interfaccia di verifica degli SLA Dopo aver registrato il ricovero, l’operatore dell’Ospedale San Carlo lo segnala a tutti i SIL che ne hanno fatto richiesta. A questo punto, l’Ospedale di Catania, - 73 - riceve la segnalazione di ricovero, ed infatti nella sua base di dati locale sono presenti tutte le informazioni relative alla degenza di Mario Rossi presso il nosocomio potentino. Verifica dei dati del ricovero presso l’ospedale di appartenenza Dal momento che si tratta di una simulazione, la policy utilizzata per validare il portafoglio di Giulio Greco è simile alla precedente, con la differenza che cambiano i dati specificati all’interno. - 74 - Ill caso d’uso “Variazione anagrafica” Lo o scopo di questo caso d’uso è quello di mostrare il funzionamento del gestore degli eventi e l’interazione con il modulo di autenticazione federato. federato. Lo schema che descrive il caso d’uso d’u è il seguente : Schema del caso d’uso Variazione Anagrafica Anche questo caso d’uso si collega ai due precedenti, in quanto consiste nella segnalazione della variazione di residenza di Mario Rossi da Catania a Caltagirone. Nello specifico ciò che succede è questo : 1. L’operatore del Comune di Caltagirone, Antonio Furio, dopo essersi autenticato presso il sistema sistema di autenticazione federato, modifica il comune di residenza di Mario Rossi da Catania a Caltagirone. - 75 - Modifica del comune di residenza 2. La variazione anagrafica, effettuata presso il Comune di Caltagirone (registrato come pubblicatore), genera un messaggio e-Gov che viene pubblicato sul GE del dominio della Sicilia . 3. Il GE Siciliano lo consegna poi ai suoi sottoscrittori : l’Ospedale di Catania ed il GE della Basilicata. 4. Il GE della Basilicata inoltra poi il messaggio all’Ospedale di Potenza 5. Effettuando una ricerca sul codice fiscale di Mario Rossi presso l’Ospedale di Catania e quello di Potenza, si verifica che sono state apportate le modifiche relative al comune di residenza. - 76 - Verifica della variazione sui SIL dell’Ospedale di Catania e di Potenza - 77 - Sia i SIL nella fase di registrazione, come pubblicatore o sottoscrittore, nei confronti dei GE, sia i GE stessi nella fase di inoltro dei messaggi di notifica ai SIL, o agli altri GE, effettuano accesso al dominio federato, perché gli endpoint a cui inviano i messaggi sono tutti protetti da FreESBee-SP. Quello di interazione con i gestori eventi è l’unico caso in cui l’autenticazione avviene soltanto nella modalità AGENTE, in quanto non può essere interattiva. Dal momento che la messa in piedi di tutta l’architettura, anche per semplici esempi come questi, non è una cosa banale, durante la sperimentazione è stato registrato un video, con relativo commento audio, che mostra praticamente come funzionano i casi d’uso fino ad ora descritti. E’ possibile visionarlo sul sito http://freesbee.unibas.it . - 78 - Capitolo 6 : Soluzioni a confronto A seguito dei test condotti, appare più chiaro il quadro generale di tutta l’architettura e del suo funzionamento, rimangono, tuttavia, alcuni quesiti aperti, soprattutto per ciò che riguarda la sicurezza. E’ stato fatto, quindi, un confronto fra le due soluzioni, con lo scopo di verificare il rispetto dei requisiti di sicurezza definiti nelle specifiche ICAR / SPCoop. Sicurezza in OpenSPCoop e in FreESBee Per ciò che riguarda la sicurezza della porta di dominio, sia in OpenSPCoop che in FreESBee, sono state rispettate tutte le specifiche definite dal CNIPA, sia in termini di Autenticazione, Autorizzazione, Confidenzialità e Non ripudio, che in termini di tecnologie utilizzate per la messa in sicurezza dei messaggi, attraverso l’adozione del protocollo HTTPS per il trasporto sicuro dei dati, e dello standard WS-Security per la firma e la crittografia della busta e-Gov, scambiata tra PdD e NICA. In tal senso, per ciò che riguarda OpenSPCoop, non è chiaro come è possibile specificare sia i certificati per la creazione di un canale sicuro SSL, sia quelli utilizzati per l’operazione di firma e crittografia dei messaggi. Questo costringe, per la modifica degli stessi, ad effettuare un intervento manuale all’interno delle cartelle in cui viene installato il rilascio, il che, però, rappresenta un punto di vulnerabilità dell’intero sistema (qualora ciò non venisse fatto), in quanto, il certificato fornito con la distribuzione, è innanzitutto un certificato non rilasciato da un ente certificatore accreditato, e pertanto non valido. La seconda cosa, ancor più grave, è che si potrebbe verificare il caso in cui, all’interno dell’architettura, più porte di dominio e NICA, avendo lo stesso certificato, si scambierebbero messaggi criptati allo stesso modo, il che potrebbe permettere facilmente la rottura, sia del canale sicuro, che della crittografia del messaggio, e quindi l’accesso in chiaro alle informazioni scambiate. In FreESBee ciò non è - 79 - possibile, in quanto la definizione del certificato è un passo obbligatorio del processo di installazione. Un altro aspetto non chiaro è come fa la porta di dominio OpenSPCoop a verificare l’identità e l’autorizzazione del mittente del messaggio, sia esso un utente che inoltra la richiesta attraverso il sistema informativo con cui sta interagendo, oppure, una richiesta formulata automaticamente da un SIL a seguito di un’operazione. Nell’architettura FreESBee tale compito viene svolto dal service provider, infatti all’esterno non vengono mai esposti gli URI reali delle porte delegate ed applicative, ma sempre un URI fittizio a cui risponde il service provider, il quale, dopo aver validato l’autenticazione ed autorizzazione del mittente, inoltra il messaggio alla porta reale. Ancora, in OpenSPCoop, non si capisce come avviene la protezione del registro dei servizi presente sul NICA. Al momento, tale servizio, risulta esserne privo, il che significa che chiunque, all’interno dell’infrastruttura, può contattarlo ed ottenere informazioni in merito agli accordi di servizio stipulati tra le parti. Nel caso di FreESBee, invece, anche il registro dei servizi è sotto la protezione del service provider, che vigila sull’accesso. Si ritiene pertanto che tali questioni saranno più chiare nel futuro, quando emergeranno a seguito di sperimentazioni reali dell’intera architettura. Reference Implementation vs FreESBee-SP Anche per ciò che riguarda l’integrazione della Reference Implementation all’interno dell’architettura ICAR ci sono un po’ di cose non molto chiare. In questo caso, però, sono state poste esplicitamente delle domande ai responsabili della regione Piemonte, in modo da comprendere meglio il funzionamento, ma le risposte sono sempre state molto vaghe e poco esaurienti. - 80 - La prima differenza sostanziale, tra la RI e FreESBee-SP, è che nella prima, la logica del SP dev’essere cablata all’interno del SIL, costringendo le varie pubbliche amministrazioni, anche quelle già dotate di sistemi in grado di scambiare messaggi SOAP, a modificare radicalmente i propri sistemi informativi, affinché venga aggiunta anche questa funzionalità. Al contrario, invece, FreSBee-SP non richiede alcuna modifica, soltanto quella relativa all’URI dell’endpoint a cui inviare il messaggio SOAP con opportuni parametri, poi è compito suo gestire tutta la logica di controllo e verifica dell’autenticazione e dell’autorizzazione, ottenendo così un notevole risparmio, sia in termini di tempi di realizzazione che di risorse economiche. Sempre nelle specifiche, si parla della possibilità che ci può essere uno scambio di messaggi tra le applicazioni dei SIL, ma per poter avvenire, comunque è necessario che il richiedente sia autorizzato a fare la richiesta. Questo, quindi, implica un’interazione automatica tra i SIL ed il sistema federato per l’acquisizione del portafoglio di asserzioni, ma in riferimento al rilascio della Reference Implementation, non è chiaro come ciò possa avvenire, in quanto le uniche modalità previste sono quelle interattive, attraverso l’inserimento di nome utente e password o smart card. Si è visto nel capitolo precedente come, invece, tale possibilità è stata prevista in FreESBee-SP differenziando le modalità di autenticazione tra UTENTE ed AGENTE, attraverso opportuni parametri di configurazione passati nella query string. C’è un’ambiguità tra le specifiche ICAR e la Reference Implementation, in quanto, sembrerebbe che la validazione del portafoglio di asserzioni deve avvenire sia dal lato fruitore che dal lato erogatore, ed una volta che il messaggio è giunto all’erogatore, esso viene validato rispetto alle credenziali della porta di dominio che inoltra il messaggio, perché è come se fosse lei a farne esplicita richiesta. - 81 - L’ambiguità nasce dal fatto che, con la Reference Implementation rilasciata, non è proprio possibile fare ciò, ma anche se lo fosse, rimane da chiarire come viene raccolto il portafoglio di asserzioni dalla porta di dominio ed inserito nel messaggio, così da ottenere l’effetto che è la porta di dominio in prima persona ad eseguire la richiesta. Un’ipotesi potrebbe essere quella di basarsi, anziché sul portafoglio di asserzioni, solamente sulle credenziali della porta, ma anche in questo caso, tali credenziali andrebbero specificate da qualche parte nel messaggio, ma dove? C’è però un altro problema a riguardo, e cioè, a prescindere dall’utilizzo del portafoglio o delle credenziali, essendo essa sempre autorizzata ad inviare messaggi al SIL, se per qualche motivo, dal lato fruitore, si riesce a bypassare i controlli e ad inviare la richiesta, essa non trova nessun altro ostacolo nel suo cammino, e viene così inoltrata direttamente al SIL, il quale, vedendosi provenire la richiesta da una porta di dominio autorizzata, effettua l’elaborazione e produce anche la risposta, aprendo così una vulnerabilità nel sistema. Per questo motivo, nell’architettura FreESBee, si è scelto di effettuare un doppio controllo, sia dal lato fruitore che da quello erogatore, con la differenza che, sull’erogatore, viene validato sempre e comunque il portafoglio di asserzioni del fruitore. Questo costringe a definire in due punti la policy che regola l’accesso ad una determinata risorsa, ma in cambio si ha il vantaggio di non permettere l’erogazione di un servizio a malintenzionati in grado di bypassare il sistema di controllo nel dominio fruitore, ad esempio contattando direttamente l’URI reale della porta delegata. Infine, gli esempi riportati nella Reference Implementation, fanno dedurre che è possibile proteggere solo l’accesso alle risorse, mentre sarebbe opportuno proteggere adeguatamente anche gli endpoint del gestore eventi, cosa che con l’architettura FreESBee è possibile, grazie al fatto di tenere nascosti, all’esterno, gli URI reali degli endpoint, esponendo soltanto quello protetto dal service - 82 - provider e quindi da FreESBee-SP, imponendo, pertanto, un accesso in modalità AGENTE. Schema delle differenze Di seguito vengono riassunte in maniera compatta le differenze sopra descritte : OpenSPCoop vs FreESBee Autenticazione, Autorizzazione, Confidenzialità e Non ripudio Utilizzo del protocollo HTTPS per il trasporto sicuro dei messaggi Utilizzo di WS-Security per la firma e la crittografia dei messaggi Verificare dell’identità e dell’autorizzazione del mittente del messaggio Protezione del registro dei servizi del NICA Reference Implementation FreESBee-SP SI SI SI SI SI SI ? SI NO SI Reference Implementation vs FreESBee-SP Modifica del SIL al fine di implementare la logica del service provider Acquisizione del portafoglio di asserzioni in automatico da parte delle applicazioni Validazione del portafoglio di asserzioni sia lato fruitore che lato erogatore Protezione degli endpoint del gestore eventi - 83 - Reference Implementation FreESBee-SP SI NO ? SI NO SI NO SI Appendice Di seguito è riportato un esempio di policy utilizzata per validare il portafoglio di asserzioni sia degli operatori che degli agenti : <Policy PolicyId="…"> <Description>…</Description> <Target> <Subjects> <AnySubject/> </Subjects> <Resources> <Resource> <ResourceMatch MatchId="…"> <AttributeValue DataType="…">…</AttributeValue> <ResourceAttributeDesignator DataType="…" AttributeId="…"/> </ResourceMatch> </Resource> </Resources> <Actions> <AnyAction/> </Actions> </Target> <Rule RuleId="… " Effect="Permit"> <Target> <Subjects> <AnySubject/> </Subjects> <Resources> <AnyResource/> </Resources> <Actions> <Action> <ActionMatch MatchId="…"> <AttributeValue DataType="…">commit</AttributeValue> <ActionAttributeDesignator DataType="…" AttributeId="…"/> </ActionMatch> </Action> </Actions> </Target> <Condition FunctionId="…"> <Apply FunctionId="…"> <SubjectAttributeDesignator DataType="…" AttributeId="idOrganizationUnit" Issuer="http://icarlab.unibas.it"/> </Apply> <AttributeValue DataType="…">Basilicata</AttributeValue> </Condition> <Condition FunctionId="…"> <Apply FunctionId="…"> <SubjectAttributeDesignator DataType="…" AttributeId="idTitle" Issuer="…"/> </Apply> - 84 - <AttributeValue DataType="…">Operatore</AttributeValue> </Condition> </Rule> <Rule RuleId="FinalRule" Effect="Deny"/> </Policy> Da notare che, trattandosi di una simulazione, negli scenari trattati, le policy sono pressoché le stesse, sia per gli UTENTI che per gli AGENTI, ovviamente ciò che cambia sono gli attributi. - 85 - Bibliografia 1. D. Box, D. Ehnebuske, G. Kakivaya, A. Layman, N. Mendelsohn, H. F. Nielsen, S. Thatte, D. Winer, “Simple Object Access Protocol (SOAP) 1.1”, W3C, 8 Maggio 2000 2. E. Christensen, F. Curbera, G. Meredith, S. Weerawarena, “Web Services Description Language (WSDL) 1.1”, W3C, 15 Marzo 2001 3. XML-Signature Syntax and Processing. W3C Recommendation, 12 Febbraio 2002 4. K. Lawrence, C. Kaler, D. Flinn, OASIS Web Services Security (WSS) TC, Consorzio OASIS 5. OASIS. Web Services Security: SOAP Message Security 1.1 (WS-Security). OASIS Standard Specification, http://docs.oasis-open.org/wss/v1.1/, 1 Febbraio 2006 6. Web Services Security UsernameToken Profile 1.1. OASIS Standard Specification, http://docs.oasis-open.org/wss/v1.1/, 1 Febbraio 2006 7. Web Services Security X.509 Certificate Token Profile 1.1. OASIS Standard Specification, http://docs.oasis-open.org/wss/v1.1/, 1 Febbraio 2006 8. Apache. SSL/TLS Strong Encryption: An Introduction. http://httpd.apache.org/docs/2.0/ssl/ssl_intro.html, 2006 9. OASIS Security Services (SAML) TC, Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0, OASIS Standard, 15 marzo 2005 10. OASIS Security Services (SAML) TC, Authentication Context for the OASIS Security Assertion Markup Language (SAML) V2.0, OASIS Standard, 15 marzo 2005 11. OASIS Security Services (SAML) TC, Metadata for the OASIS Security Assertion Markup Language (SAML) V2.0, OASIS Standard, 15 marzo 2005 - 86 - 12. OASIS Security Services (SAML) TC, Profiles for the OASIS Security Assertion Markup Language (SAML) V2.0, OASIS Standard, 15 marzo 2005 13. OASIS Security Services (SAML) TC, Identity Provider Discovery Service Protocol and Profile, OASIS Standard, 2 ottobre 2007 14. Moses, T. ed. eXtensible Access Control Markup Language (XACML) Version 2.0. OASIS Standard, 1 Feb 2005 15. SPC, “Sistema pubblico di cooperazione: Porta di Dominio, Versione 1.0”, CNIPA, 14 Ottobre 2005 16. SPC, “Sistema pubblico di cooperazione: Busta di e-Gov, Versione 1.1”, CNIPA, 14 Ottobre 2005 17. SPC, “Sistema pubblico di cooperazione: Accordo di Servizio, Versione 1.0”, CNIPA, 14 Ottobre 2005 18. SPC, “Sistema pubblico di cooperazione: Servizi di Sicurezza, Versione 1.0”, CNIPA, 14 Ottobre 2005 19. “Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions" Addison-Wesley, 2004, di Gregor Hohpe, Bobby Woolf 20. G. Mecca, A. Pappalardo, S. Raunich, Gruppo di Sviluppo FreESBee (2008). Il Progetto freESBee: Soluzioni Infrastrutturali Open Source per il Sistema Pubblico di Cooperazione Applicativa, SEBD 21. ICAR-INF3, Sistema Federato Interregionale di Autenticazione: Organizzazione, versione 1.0, Ottobre 2005. 22. Progetto ICAR, Sistema Federato Interregionale di Autenticazione: Modello Architetturale di Riferimento, 3 aprile 2007 23. Progetto ICAR, Sistema Federato Interregionale di Autenticazione: Specifica Delle Interfacce Applicative Esterne, 3 aprile 2007 24. Shibboleth Source Access web site. https://spaces.internet2.edu/display/SHIB/SourceAccess - 87 -