Progettazione di un sistema Single SignOn che permette l'accesso tramite tipi diversi di credenziali



Documenti analoghi
Single Sign On sul web

Tracciabilità degli utenti in applicazioni multipiattaforma

Protocolli di autenticazione ione per la connessione alle reti sociali. Le tecnologie del Web 2.0

Introduzione Kerberos. Orazio Battaglia

Application Server per sviluppare applicazioni Java Enterprise

Identity Access Management nel web 2.0

PRESENTAZIONE DEL PORTALE STIPENDI PA

L esperienza della Regione Lazio

Specifiche Tecnico-Funzionali

Sistemi informativi e Telemedicina Anno Accademico Prof. Mauro Giacomini

Central Authen:ca:on Service

Identity Access Management: la soluzione loginfvg

System & Network Integrator. Rap 3 : suite di Identity & Access Management

LDAP - sta brutta bestia!

Provincia di Rimini Servizio Infrastrutture Territoriali e Tecnologiche Ufficio Sistemi Informativi. Scambio dati digitali Cittadini Provincia

Sistemi avanzati di gestione dei Sistemi Informativi

Configurazione di sicurezza di XAMPP

Approfondimento di Marco Mulas

Guida modalità di autenticazione COHESION

Elementi di Sicurezza e Privatezza Lezione 18 Autenticazione: Single Sign On

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

Offerta per fornitura soluzione di strong authentication

Manuale LiveBox WEB ADMIN.

Problematiche correlate alla sicurezza informatica nel commercio elettronico

Wireless Network Esercitazioni. Alessandro Villani

Applicazioni per l autenticazione Sicurezza nelle reti di TLC - Prof. Marco Listanti - A.A. 2008/2009

Sommario. Introduzione Architettura Client-Server. Server Web Browser Web. Architettura a Due Livelli Architettura a Tre Livelli

Titolo Perché scegliere Alfresco. Titolo1 ECM Alfresco

Presentazione Data Base

Apache Webserver. Piccola introduzione all'installazione ed alla configurazione, a cura di: Alessandro Gervaso

Messa in esercizio, assistenza e aggiornamento di una Piattaform Open Source Liferay plug-in per ARPA

Lezione 9. Applicazioni tradizionali

Software Servizi Web UOGA

Web Application Libro Firme Autorizzate

Accesso remoto sicuro alla rete aziendale La tecnologia PortWise

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Bibliografia: Utenti e sessioni

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Guida all Installazione del ProxyFatturaPA

TYPO3 in azione con l infrastruttura ZEND: affidabilità e sicurezza. Mauro Lorenzutti CTO di Webformat srl mauro.lorenzutti@webformat.

ACCESSO AL PORTALE VPN

lem logic enterprise manager

Active Directory. Installatore LAN. Progetto per le classi V del corso di Informatica

Corso di Laurea in Informatica Reti e Sicurezza Informatica

@2011 Politecnico di Torino. Pag. 1. Architettura distribuita. Architetture Client/Server. Architettura centralizzata. Architettura distribuita

Corso di Informatica di Base. Laboratorio 2

SMS API. Documentazione Tecnica YouSMS HTTP API. YouSMS Evet Limited

Upload del CMS sul server scelto

S.AC. - Sistema di Accreditamento Assessorato Infrastrutture e Lavori Pubblici Regione Lazio Manuale d'uso

Business Intelligence. strumento per gli Open Data

SICUREZZA. Sistemi Operativi. Sicurezza

Sistemi Operativi SICUREZZA. Sistemi Operativi. D. Talia - UNICAL 14.1

Lextel Servizi Telematici per l Avvocatura

Introduzione ai Web Services Alberto Polzonetti

Antonio Mattioli Seminario 5/12/2006. Windows Single Sign-on

Sistemi operativi e tipi di dati estremamente ETEROGENEI. Differenti livelli di possibile interazione con gli applicativi proprietari.

Release Notes di OpenSPCoop2. Release Notes di OpenSPCoop2

Università degli Studi di Napoli Parthenope Facoltà di Scienze e Tecnologie Corso di Laurea in Informatica Generale

Reti di Telecomunicazione Lezione 7

ATM. Compatibile con diversi Canali di Comunicazione. Call Center / Interactive Voice Response

Nuvola It Data Space

Protocolli e architetture per WIS

! S/Key! Descrizione esercitazione! Alcuni sistemi S/Key-aware. " Windows " Linux. ! Inizializzazione del sistema. " S = prepare(passphrase, seed)

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Introduzione a PostgreSQL e phppgadmin

Manuale LiveBox WEB ADMIN.

PSNET UC RUPAR PIEMONTE MANUALE OPERATIVO

InitZero s.r.l. Via P. Calamandrei, Arezzo

Sistema di Gestione dei Contenuti Multimediali

MANUALE UTENTE FORMULA PEC

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Accessi remoti sicuri alle risorse di rete aziendali La tecnologia PortWise

REOL-Services Quick Reference Ver. 1.1 Tecno Press Srl. 1

1 Presentazione progetti in modalità completamente digitale Descrizione delle modalità di presentazione dei progetti

crazybrain snc Presentazione_VisualFTP.pdf Pag. 1 VisualFTP Presentazione del prodotto Web partner:

IBM Software Demos Tivoli Identity Manager e Tivoli Directory Integrator

Sistema di autenticazione Gestisce il processo di riconoscimento delle credenziali (certificazione) per l accesso ai servizi;

Dashboard. Il Firmware dell UAG4100 è basato su ZLD, firmware comune a tutti gli apparati professionali ZyXEL.

Sicurezza in Internet

La sicurezza nelle comunicazioni Internet

Installazione Web Channel Experience 1.0 Based on NW 7.3 sp02, Oracle

MINIGUIDA AI SERVIZI DI HOME BANKING

Fatturazione Elettronica verso la P.A. Il servizio offerto da dovidea

L autenticazione in rete e accesso ai servizi digitali. roberto palumbo

Cosa è Tower. Sistema di autenticazione per il controllo degli accessi a reti wireless. struttura scalabile. permette la nomadicità degli utenti

Istruzioni operative per l accesso semplificato ai servizi del SIB riservati agli operatori biologici

MANUALE PARCELLA FACILE PLUS INDICE

Inviare la Posta Elettronica in Modo Sicuro

CONTENUTI 1. INTRODUZIONE CONCETTI BASICI SU EQUINOX CMS XPRESS ACCESSO A EQUINOX CMS XPRESS PAGINA D INIZIO...

Utilizzo di Certificati SSL e relative implicazioni

Questo breve manuale ha l intento di mostrare come integrare il tuo sito Joomla con la tua piattaforma E- Learning Docebo.

La sicurezza nel Web

Comunicazioni sicure su Internet: https e SSL. Fisica dell Informazione

Caratteristiche di una LAN

AscoS3 Manuale Utente. Release 1.2

Manuale servizio SMTP autenticato

Obiettivi. Al termine del webinar sarete in grado di:

ALICE AMMINISTRAZIONE UTENTI WEB

Transcript:

Progettazione di un sistema Single SignOn che permette l'accesso tramite tipi diversi di credenziali Ludwig Bargagli Comune di Grosseto, Jug Toscana, GuruAtWork

Java e OS nella PA Protocollo ICI Anagrafe Polizia Municipale Archiviazione sostitutiva Stipendi Molte molte altre cose...

Java e OS nella PA Stiamo sviluppando un SSO Open Source

SSO Molte applicazioni devono consentire l'accesso solo ad utenti autenticati ed autorizzati 4

5

Single Sign-on (SSO) Autenticazione: processo per verificare l'identità dell'utente (in genere: username e password, in alcuni casi: smart card ecc..) Autorizzazione: verifica se l'utente ha il permesso per ottenere la risorsa richiesta 6

Single Sign-on (SSO) Il processo di autenticazione deve essere ripetuto ogni qualvolta un utente richieda di utilizzare una diversa risorsa. Il procedimento può essere tedioso (e insicuro!) per un utente con diversi accessi a diverse risorse e ancor più per gli amministratori dei sistemi, che sono obbligati a ricordare o trascrivere la propria lista di username/password. L obiettivo a cui una struttura dovrebbe tendere è quello di fornire all utenza gli strumenti per l accesso trasparente e sicuro ad ogni risorsa, semplificando la gestione di tali processi da parte degli amministratori dei sistemi. In altre parole, implementare un meccanismo di 7

Single Sign-on (SSO) 1. è un meccanismo che consente all utente di autenticarsi una sola volta, ovvero di utilizzare un unica credenziale per avere accesso a tutte quelle risorse in cui è autorizzato. 2. prevede che la parte client di un sistema venga riconosciuta solo una volta nel corso di una sessione al momento di accesso ad una applicazione basata su server: questa abilitazione iniziale offre all utente la possibilità di accedere a tutti i server a cui il client è autorizzato dall amministratore, senza quindi bisogno di imputare successivi login. 8

Meccanismi di autenticazione HTTP Basic authentication HTTP Digest authentication HTTP FORM-based authentication Altri (HTTPS) che vedremo più avanti 9

HTTP Basic Athentication E' usata, ad esempio, da Tomcat per accedere a Tomcat Manager 10

HTTP Basic Athentication 11

Autorizzazione Dichiarativa - basata su HTTP basic, digest... - supporto fornito dal contenitore Programmatica - gestita direttamente dal programmatore 12

Soluzione dichiarativa basata sul contenitore Il contenitore permette di impostare accessi autorizzati Le impostazioni vengono specificate dichiarativamente in file gestiti dal contenitore Alcune risorse (URL) sono dichiarate protette: l'accesso è permesso solo ad utenti autenticati e con un ruolo preciso L'elenco degli utenti, con le loro password e i loro ruoli è memorizzato in un file, in un db o in una struttura più adatta Quando è richiesta una risorsa protetta, il contenitore richiede le credenziali di autenticazione dell'utente Se l'utente dispone di credenziali (username, password e ruolo) corrette, allora può accedere alla risorsa 13

LDAP Lightweight Directory Access Protocol (LDAP) è un protocollo di accesso, in modalità client-server, a servizi di directory 14

OpenLDAP OpenLDAP (http://www.openldap.org) è un progetto open source che ha prodotto e mantiene: Server LDAPv2 (openldap 1.x) Server LDAPv3 (openldap 2.x) SDK in C per i client LDAP Libreria Java per LDAP (contributo di Novell) Bridge JDBC/LDAP (contributo di OctetString acquisita da Oracle) 15

E gli altri linguaggi??? Con J2EE possiamo utilizzare l'autorizzazione dichiarativa e quella programmatica E' sufficiente inserire poche righe di codice nel web.xml dell'applicazione I contenitori sono facilmente configurabili Ma cosa accade se usiamo PHP, Python, ASP ecc.??? 16

Autenticazioni sicure HTTPS Client authentication HTTPS Server authentication HTTPS Mutual authentication Con l uso della Basic Authentication il Server richiede l autenticazione dell utente tramite username e password ma queste informazioni, come tutte le altre scambiate tra client e server non sono criptate. Per ottenere un livello di sicurezza più elevato è necessario utilizzare il protocollo SSL (Secure Socket Layer) che prevede l autenticazione tra le parti mediante lo scambio di certificati che contengono una chiave pubblica (chiave simmetrica) ed una chiave privata (chiave asimmetrica). 17

Solo Username e password? E le smart card? Per eseguire la procedura di autenticazione possiamo usare le smart card: CIE CNS Ma occorre creare strati software personalizzati per risalire all'utente (CF, ID...) 18

Altri metodi? Biometria? Se funzionano si possono integrare con i sistemi di autenticazione esistenti 19

Open Portal Guard Open Portal Guard protects the sensitive services of your portal through a * single-sign-on authentication system that can use o username/password (for legacy reasons) o SSL client authentication with X.509 certificates and keys on file or various types of smartcards * centralized declarative access control http://www.comune.grosseto.it http://openportalguard.sourceforge.net/ 20

www.porvoo12.net 21

OPG: For more details Presentations from Porvo 7...11 & http:// openportalguard.sourceforge.net 22

Intranet 23

International standards Open Portal Guard uses existing and proven standards as much as possible. This includes: * SSL/TLS for channel security and authentication of both client and server * the API (but not mechanism) of HTTP Basic authentication towards application servers and applications 24

Open source & Free Sw The implementation reuses as much existing and proven open source software as possible. This includes: * Apache with lots of existing functionality * OpenLDAP for managing user and token data 25

Lang: Java Role-based authorization protects resources by only making them available to users who have been assigned to the appropriate role. JEE provides a standard way of implementing this, using both declarative and programmatic techniques. The configuration file is the web.xml of the application Application server configuration is easy 26

Gli altri linguaggi Con J2EE possiamo utilizzare l'autorizzazione dichiarativa e quella programmatica E' sufficiente inserire poche righe di codice nel web.xml dell'applicazione I contenitori sono facilmente configurabili 27

Open Portal Guard Open Portal Guard protects the sensitive services of your portal through a " single-sign-on authentication system that can use username/password (for legacy reasons) SSL client authentication with X.509 certificates and keys on file or various types of smartcards centralized declarative access control 28

Smart cards the Electronic ID Card (Carta d'identità Elettronica or CIE) by the Ministry of the Interior and issued by Towns the National Service Card (Carta Nazionale dei Servizi or CNS) by the Ministry of Innovation and Technology that is issued by regional governments (including Lombardia, Lazio, Tuscany) and others. 29

Configurazione di Apache Il nuovo Authenticator, invece di cercare i gruppi a cui appartiene un utente su LDAP o su database, li riceve direttamente dall'apache a frontend attraverso il RequestHeader. Per configurare l'access handler di Apache, occorre modificare il file /etc/apache2/sites-available/ssl NameVirtualHost *:443 <VirtualHost *:443>... <Location /provaludo> SSLRequireSSL SSLUserName SSL_CLIENT_S_DN_X509 SSLOptions +StdEnvVars +ExportCertData +FakeBasicAuth +StrictRequire SetHandler mod_python PythonPath "sys.path+['/var/www']" PythonAccessHandler opg PythonFixupHandler opg PythonDebug On order deny,allow deny from all allow from all RequestHeader set OPG_USERNAME %{OPG_USERNAME}e RequestHeader set OPG_USERROLES %{OPG_USERROLES}e ProxyPass http://xxxx.prova.it:0000/test ProxyPassReverse http://xxxx.prova.it:0000/test </Location>... </VirtualHost> 30

New Tomcat Authenticator We use standard JEE access control We developed a new authenticator for Apache Tomcat in collaboration with Comune di Trento 31

New JBoss Authenticator We are developing a new JBoss authenticator 32

33

Authenticators.properties sorgente (apache-tomcat-5.5.20-src.zip): apache-tomcat-5.5.20-src\container\catalina\src\share\ binario (apache-tomcat-5.5.20.zip): apache-tomcat-5.5.20\apache-tomcat-5.5.20\server\lib\catalina.jar org\apache\catalina\startup\authenticators.properties BASIC=org.apache.catalina.authenticator.BasicAuthenticator CLIENT-CERT=org.apache.catalina.authenticator.SSLAuthenticator DIGEST=org.apache.catalina.authenticator.DigestAuthenticator FORM=org.apache.catalina.authenticator.FormAuthenticator NONE=org.apache.catalina.authenticator.NonLoginAuthenticator OPG=.HeaderAuthenticator it.prova.authenticator

BasicAuthenticator.java sorgente (apache-tomcat-5.5.20-src.zip): apache-tomcat-5.5.20-src\container\catalina\src\share\ binario (apache-tomcat-5.5.20.zip): apache-tomcat-5.5.20\apachetomcat-5.5.20\server\lib\catalina.jar org\apache\catalina\authenticator\basicauthenticator.java Package org.apache.catalina.authenticator;... // Validate any credentials already included with this request String username = null; String password = null; MessageBytes authorization = request.getcoyoterequest().getmimeheaders().getvalue("authorization"); if (authorization!= null) { authorization.tobytes(); ByteChunk authorizationbc = authorization.getbytechunk(); if (authorizationbc.startswithignorecase("basic ", 0)) { authorizationbc.setoffset(authorizationbc.getoffset() + 6); CharChunk authorizationcc = authorization.getcharchunk(); Base64.decode(authorizationBC, authorizationcc); // Get username and password int colon = authorizationcc.indexof(':'); if (colon < 0) { username = authorizationcc.tostring(); } else { char[] buf = authorizationcc.getbuffer(); username = new String(buf, 0, colon); password = new String(buf, colon + 1, authorizationcc.getend() - colon 1); } authorizationbc.setoffset(authorizationbc.getoffset() - 6); } principal = context.getrealm().authenticate(username, password); if (principal!= null) { register(request, response, principal, Constants.BASIC_METHOD, username, password); return (true); } }...

SSLAuthenticator.java sorgente (apache-tomcat-5.5.20-src.zip): apache-tomcat-5.5.20-src\container\catalina\src\share\ binario (apache-tomcat-5.5.20.zip): apache-tomcat-5.5.20\apachetomcat-5.5.20\server\lib\catalina.jar org\apache\catalina\authenticator\sslathenticator.java package org.apache.catalina.authenticator;... // Retrieve the certificate chain for this client if (containerlog.isdebugenabled()) containerlog.debug(" Looking up certificates"); X509Certificate certs[] = (X509Certificate[]) request.getattribute(globals.certificates_attr); if ((certs == null) (certs.length < 1)) { request.getcoyoterequest().action (ActionCode.ACTION_REQ_SSL_CERTIFICATE, null); certs = (X509Certificate[]) request.getattribute(globals.certificates_attr);} if ((certs == null) (certs.length < 1)) { if (containerlog.isdebugenabled()) containerlog.debug(" No certificates included with this request"); response.senderror(httpservletresponse.sc_bad_request, sm.getstring("authenticator.certificates")); return (false); } // Authenticate the specified certificate chain principal = context.getrealm().authenticate(certs);...

HeaderAuthenticator.java sorgente (apache-tomcat-5.5.20-src.zip): apache-tomcat-5.5.20-src\container\catalina\src\share\ binario (apache-tomcat-5.5.20.zip): apache-tomcat-5.5.20\apachetomcat-5.5.20\server\lib\catalina.jar org\apache\catalina\authenticator\headerathenticator.java package it.grosseto.gol.elisa.catalina.authenticator;... String headeruser = request.getcoyoterequest().getheader("opg_username"); String headeruserroles = request.getcoyoterequest().getheader("opg_userroles"); Vector roles = new Vector(); roles = getroles(headeruserroles); principal = new GenericPrincipal(context.getRealm(), headeruser, null, roles);...

Cosa serve

Cosa serve

Esempio di conf: Firefox

Esempio di conf: Firefox

Ludwig Bargagli Sviluppatore e sistemista presso i Servizi Informatici del Comune di Grosseto http://www.comune.grosseto.it Collaboratore di riviste di informatica e sistemi operativi Collaboratore di Java Italian Portal http://www.javaportal.it Java User Group Toscana http://www.jugtoscana.org GuruAtWork (G@W) Linux User Group Grosseto Joomla User Group http://www.guruatwork.com Email: ludwig.bargagli@gmail.com Rispondo sempre (basta avere molta pazienza)