La mia presentazione al T3campItalia 2011. Argomento della presentazione sono stati i sistemi di autenticazione in TYPO3, da LDAP a Facebook, fino allo sviluppo di un servizio di autenticazione custom.
1. Sistemi di
autenticazione in
TYPO3
Mauro Lorenzutti
T3Camp Italia Bologna 28/29 Ottobre 2011
Il secondo evento italiano dedicato a TYPO3
2. Mauro Lorenzutti
CTO di Webformat
Sviluppatore e consulente TYPO3 dal 2004
TYPO3 Certified Integrator dal 2009
Sviluppatore di numerose estensioni, tra cui:
DB Integration (wfqbe)
Webformat Shop System (extendedshop)
TYPO3-Alfresco Connector (alfresco)
Contacts:
mauro.lorenzutti@webformat.com
www.webformat.com
Pag. 2 http://www.t3campitalia.it/
3. Scaletta
Autenticazione standard di TYPO3
Servizi di autenticazione alternativi
LDAP
Facebook
Database esterni
Ecc…
Introduzione alla creazione di un servizio di
autenticazione custom
Pag. 3 http://www.t3campitalia.it/
4. Utenti di FE e di BE
Nativamente TYPO3 suddivide gli utenti in due insiemi
distinti:
Utenti di Frontend: sono gli utenti che hanno accesso a pagine e
contenuti riservati del sito
Utenti di Backend: sono gli utenti che hanno accesso all’area di
amministrazione del sito
Pag. 4 http://www.t3campitalia.it/
5. Utenti di FE e di BE
Utenti di FE
Salvati nella tabella fe_users
Password in chiaro!!!
Utenti di BE
Salvati nella tabella «be_users»
Password criptata
Pag. 5 http://www.t3campitalia.it/
6. Proteggiamo le password
Fondamentali per gli utenti di frontend ma utili anche
per quelli di backend:
RSA authentication for TYPO3 (rsaauth)
Salted user password hashes (saltedpasswords)
Sono fornite col core di TYPO3 ma NON sono pre-installate
Pag. 6 http://www.t3campitalia.it/
7. RSA authentication
Cripta le password mediante una coppia di chiavi
pubblica e privata rigenerata ad ogni login
La password viene criptata dal client con la chiave pubblica
e quindi inviata al server dove viene decriptata con la chiave
privata
Più sicuro della cifratura standard delle password di
BE
Non influisce su come gli utenti di FE effettuano il login
funziona solo con l’estensione felogin
Pag. 7 http://www.t3campitalia.it/
8. Salted user password
hashes
Consente di salvare le password con un algoritmo più
sicuro del classico md5
Può essere installata anche su siti pre-esistenti grazie
alla capacità di convertire automaticamente le
password degli utenti al primo accesso
Pag. 8 http://www.t3campitalia.it/
9. Scaletta
Autenticazione standard di TYPO3
Servizi di autenticazione alternativi
LDAP
Facebook
Database esterni
Ecc…
Introduzione alla creazione di un servizio di
autenticazione custom
Pag. 9 http://www.t3campitalia.it/
10. Voglio di più!!!
E se non mi basta il database locale di TYPO3?
E se ho già un database utenti e voglio usare quello?
E se volessi usare le stesse credenziali del mio Active
Directory?
E se volessi usare le credenziali di Facebook, Google,
Twitter, OpenID, ecc. ecc.?
Pag. 10 http://www.t3campitalia.it/
11. L’autenticazione come
servizio
TYPO3 supporta molteplici metodi di autenticazione
sottoforma di servizio
Cosa sono i servizi in TYPO3?
Un servizio rappresenta uno dei possibili metodi per
rispondere ad una richiesta
Se un’estensione implementa un servizio deve registrarsi al
gestore di quei servizi specificando una priorità
Il gestore richiamerà in sequenza i vari servizi uno dopo
l’altro finché non ottiene risposta positiva o termina la catena
Pag. 11 http://www.t3campitalia.it/
12. Due esempi di servizi
Dove troviamo il concetto di servizio in TYPO3?
Autenticazione
TYPO3 consente di installare più sistemi di autenticazione in
contemporanea
DAM – Digital Asset Management
Il DAM utilizza il concetto di servizio per consentire l’installazione di più
estrattori di metadati dai file
Pag. 12 http://www.t3campitalia.it/
13. Servizi di autenticazione
TYPO3 dispone di un gestore di servizi di
autenticazione sia di FE che di BE
Alcuni esempi:
eu_ldap – Autenticazione mediante LDAP
openid – Autenticazione mediante il protocollo OpenID
facebook2t3 – Autenticazione mediante facebook
…
Pag. 13 http://www.t3campitalia.it/
14. auth
Ci sono estensioni per
l’autenticazione basata
su IP, certificati, database
esterni, twitter, google,
linkedin, ecc. ecc.
Pag. 14 http://www.t3campitalia.it/
15. LDAP
eu_ldap
Supporta Active Directory,
OpenLDAP, …
Utile soprattutto in ambito
intranet
Sia per FE che per BE
Pag. 15 http://www.t3campitalia.it/
16. Processo di autenticazione
LDAP
L’utente inserisce username e password in TYPO3
TYPO3 contatta il server LDAP fornendo username e
password
Due possibilità:
A. L’utente esiste e le credenziali sono corrette
B. L’utente non esiste o le credenziali non sono corrette
Pag. 16 http://www.t3campitalia.it/
17. A. Accesso riuscito
Il server LDAP restituisce i dati dell’utente
TYPO3 salva i dati dell’utente inserendo o
aggiornando un record nella tabella utenti (fe_users o
be_users)
Anche i gruppi possono essere automaticamente importari e associati
Nella tabella utenti viene settata una password random, non quella
dell’utente
L’utente viene autenticato in TYPO3
Pag. 17 http://www.t3campitalia.it/
18. B. Utente non trovato
Il server LDAP risponde negando l’accesso
TYPO3 richiama il servizio di autenticazione
successivo
Se nessun servizio di autenticazione dà esito positivo, l’utente non viene
autenticato
Se un servizio di autenticazione riconosce l’utente, l’utente viene loggato
È possibile impedire la prosecuzione nella catena dei
servizi di autenticazione
Pag. 18 http://www.t3campitalia.it/
19. Considerazioni su LDAP
Il primo vantaggio è quello di spostare la gestione
delle utenze su un server LDAP condividendo le
credenziali di accesso con altri sistemi
Ad ogni accesso viene eseguita l’autenticazione
tramite il server LDAP
se un utente viene cancellato o aggiornato sul server LDAP,
al suo primo accesso viene cancellato o aggiornato anche in
TYPO3
Pag. 19 http://www.t3campitalia.it/
20. Facebook Connect
facebook2t3
Consente di autenticare utenti in TYPO3 usando le
credenziali di facebook
Richiede la creazione di un’applicazione su Facebook
(non serve alcuno sviluppo) per avere un codice
applicazione
Pag. 20 http://www.t3campitalia.it/
21. Processo di autenticazione
Fornisce un pulsante di login
L’utente clicca su questo pulsante e si apre un popup
di facebook
Pag. 21 http://www.t3campitalia.it/
22. Processo di autenticazione
L’utente esegue il login direttamente in facebook
Se il login ha successo, i dati dell’utente vengono
importati in TYPO3 creando o aggiornando un record
nella tabella utenti
L’utente deve autorizzare l’importazione dei dati
La password NON viene importata
Pag. 22 http://www.t3campitalia.it/
23. Database esterni
rlmp_extdbauth
Consente di integrare database esterni di utenti
Il processo è sempre lo stesso: l’utente viene
autenticato accedendo al database esterno e vengono
importati / aggiornati i suoi dati nel db locale
Richiede qualche modifica per funzionare con TYPO3
4.5
Molte volte è più semplice implementare un proprio
servizio di autenticazione
Pag. 23 http://www.t3campitalia.it/
24. Scaletta
Autenticazione standard di TYPO3
Servizi di autenticazione alternativi
LDAP
Facebook
Database esterni
Ecc…
Introduzione alla creazione di un servizio di
autenticazione custom
Pag. 24 http://www.t3campitalia.it/
25. Servizio di autenticazione
custom
Proviamo ad implementare un nostro servizio di
autenticazione
Requisiti:
Login basato su IP
Associazione fe_user – IP
Pag. 25 http://www.t3campitalia.it/
26. Kickstarter 1/2
Usiamo il kickstarter per iniziare lo sviluppo
dell’estensione e per creare un campo aggiuntivo alla
tabella utente:
Pag. 26 http://www.t3campitalia.it/
27. Kickstarter 2/2
Creiamo un
servizio:
Service type:
«auth»
Sub type:
«getUserFE,
authUserFE»
Priority:
«high (80)»
Pag. 27 http://www.t3campitalia.it/
28. Creiamo un utente
Creiamo un utente di FE:
Settiamo l’IP dal quale effettuare l’autologin:
Pag. 28 http://www.t3campitalia.it/
29. Implementiamo il servizio
Apriamo il file sv1/class.user_authip_sv1.php
Cambiamo il genitore della classe come segue:
class user_authip_sv1 extends tx_sv_authbase {
Convertiamo la funzione:
function process($content='', $type='', $conf=array())
In:
function getUser()
Aggiungiamo la funzione seguente:
function authUser(&user)
Pag. 29 http://www.t3campitalia.it/
32. Proviamo il login
Andiamo ora nel frontend e clicchiamo sul pulsante
«Login» senza inserire nessun utente
È possibile anche attivare l’autologin per autenticare
l’utente senza farlo passare dalla form di login
Pag. 32 http://www.t3campitalia.it/
33. Processo di autenticazione
Mediante la funzione getUser si verifica nel db se
esiste un utente associato al REMOTE_ADDR
In caso positivo la funzione authUser resituisce true
In caso negativo la funzione authUser consente di
decidere se proseguire con il prossimo servizio di
autenticazione o meno
Pag. 33 http://www.t3campitalia.it/
34. Attenzione!
Questa è un’estensione demo, non usare in
produzione!!!
Pag. 34 http://www.t3campitalia.it/
35. La potenza dei servizi
Non sottovalutare la potenza dei servizi!
Mediante un’estensione è possibile integrare qualsiasi
sorgente di utenti esterna
Ci sono già moltissime estensioni per integrare
sorgenti esterne di utenti
Pag. 35 http://www.t3campitalia.it/
36. Q&A
Abbiamo visto come proteggere le password dei nostri
utenti
Abbiamo introdotto il concetto di «servizio»
Abbiamo analizzato due servizi di autenticazione
molto diffusi (ldap e facebook)
Abbiamo abbozzato un servizio di autenticazione
custom
Pag. 36 http://www.t3campitalia.it/
37. Grazie!
Grazie a tutti per l’attenzione
I miei riferimenti:
mauro.lorenzutti@webformat.com
http://it.linkedin.com/in/maurolorenzutti
http://twitter.com/#!/MauroLorenzutti
Pag. 37 http://www.t3campitalia.it/