Corso Drupal advanced LDAP – Mario Baioli http://www.corsodrupal.uniroma1.it GLAD (gruppo di lavoro drupal Sapienza) Centralizzazione delle utenze Avere a che fare con una utenza numerosa e con servizi informatici eterogenei e distribuiti spesso si risolve nella creazione di innumerevoli account per scopi diversi. • Al crescere delle attività e dei servizi del sito si rende necessaria la manutenzione degli account, che potrebbe diventare un problema per la sicurezza generale del sistema informatico per la presenza di account validi non usati, account dimenticati…, password da cambiare ecc. oltre che un onere da parte di chi gestisce i contatti. • Il nostro Drupal ha una ottima gestione degli account ed il nostro obbiettivo è di sfruttare i ruoli, ognuno dei quali può aver associati dei permessi specifici, in modo che l’amministratore del sito possa decidere in modo preciso quali sono le operazioni consentite per ciascun utente. • Centralizzare la gestione delle utenze é un modo per risolvere il problema perché da un lato ci esonera dalla raccolta e manutenzione dei dati identificativi dell’utente e dall’altra ci offre la sicurezza che gli utenti che si stanno autenticando fanno di sicuro parte dell’Ateneo. • Ci farebbe molto comodo se l’utente avesse già un ruolo assegnato dall’Ateneo. LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 2 Gestione centralizzata delle utenze con LDAP • In questo contesto ci si propone di dare una descrizione di come implementare un sistema per la gestione centralizzata delle utenze facendo uso di LDAP. LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 3 LDAP un po’ di date … • Negli anni 90 era X.500/DAP (ISO/OSI) • 1991: definizione di LDAP (TCP/IP) • Da gateway verso X.500 a server LDAP standalone. • Nel 1993 università del Michigan, LDAP soppianta il protocollo DAP. • 1996: LDAPv3 è una versione alleggerita del protocollo DAP, da cui deriva il suo nome di Lightweight Directory Access Protocol LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 4 ancora storia • Prima di LDAP, per accedere a dati memorizzati in una directory X.500 un client doveva supportare il DAP (DIRECTORY ACCESS PROTOCOL), il quale imponeva una notevole penalizzazione delle risorse in gioco in quanto richiedeva l'utilizzo della specifica OSI (Open System Interconnection) che oggi é sostituita largamente dalla suite di protocolli TCP/IP ed altri protocolli. • LDAP nasce proprio per sostituire DAP in quanto molto oneroso dal punto di vista dell'impiego delle risorse. Infatti la “L” aggiunta nell’acronimo sta per Lightweight LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 5 Quindi LDAP cos’è? • LDAP è un protocollo di accesso a Directory Servers (RFC 1777) • Usa un modello gerarchico delle informazioni, che sono organizzate in un albero (DIT) • Il modello informativo é basato sulle entry, le quali sono composte da attributi che possono avere uno o più valori • E’ possibile determinare il tipo degli attributi e il loro comportamento. LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 6 LDAP • LDAP è client-sever: un client LDAP invia una richiesta ad un server LDAP, che processa la richiesta ricevuta, accede eventualmente ad un directory database e ritorna dei risultati al client. LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 7 Tipo di informazioni che possono essere memorizzate in una directory • Il modello di informazioni di LDAP è basato sulle entry. Una entry è una collezione di attributi aventi un unico nome globale: il Distinguished Name (DN). • Il DN è usato per riferirsi ad una particolare entry, senza avere ambiguità infatti ogni attributo dell’entry ha un tipo ed uno o più valori. • I tipi di solito sono stringhe mnemoniche, come cn per i common name (i nomi comuni), oppure mail per gli indirizzi di posta elettronica. LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 8 Nel nostro caso Per la sintassi dei valori: • %username and %basedn are valid tokens in the expression. Typically it will be: • cn=%username,%basedn which might evaluate to cn=jdoe,ou=campus accounts, dc=ad, dc=mycampus, dc=edu Base DNs are entered above. • Utilizziamo cn=%username LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 9 DN identifica in maniera univoca un elemento • • • • • uid (userid), si tratta di un identificativo unico obbligatorio cn (common name), si tratta del cognome della persona o (organization), si tratta dell'azienda della persona u (organization unit), si tratta dell’unità organizzativa dell‘Ateneo dove la persona lavora mail, si tratta dell'indirizzo di posta elettronica LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 10 Dati LDAP Sapienza Valore LDAP Sapienza descrizione Prof. Ordinario Professore I fascia – ordinario Prof. Associato Professore II fascia – associato Ricercatore e assimilato Ricercatore universitario Area Biblioteche Personale tecnico amministrativo area biblioteche Tecnico-Amministrativo Personale tecnico amministrativo delle altre aree Professore a Contratto Docenti non strutturati Collaboratore a Contratto Personale amministrativo non strutturato Organizzazione Interna Account per ufficio esempio: [email protected] Area sociosanitaria non è ancora importata (!) Immagino che ci saranno anche i colleghi dell’area infermieristica del Policlinico Umberto I LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 11 LDAP LDAP configurato … ora cosa dobbiamo fare? • Il ruolo è associato all’utente già dall’Ateneo e la nostra gestione profili utenti, ruoli e permessi si popola automaticamente al solo accesso da parte dell’utente. LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 12 LDAP • Una volta che l’utente si autentica con successo sul nostro sito Drupal con LDAP Sapienza, resterà tra gli utenti del sito portandosi con se il ruolo assegnato da Sapienza. • Quindi noi cosa dobbiamo fare LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 13 LDAP • Ora conosciamo i ruoli che possono arrivare sul sito da autenticazione LDAP e possiamo progettare l’insieme dei permessi associati a ciascuno di questi ruoli dal pannello Permessi dove verranno mostrati tutti i permessi associati ai ruoli esistenti: in questo modo possiamo prevedere quali permessi avrà un utente registrato. • Il nuovo utente che arriva da LDAP avrà un ruolo già assegnato con i suoi permessi che noi gli abbiamo costruito. LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 14 LDAP • L’unico sforzo da parte dell’amministratore è la configurazione iniziale ed una buona progettazione sui ruoli e permessi. • Niente altro … ;-) LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 15 Utenti diversi da LDAP • D. Vogliamo usare anche altri LDAP server per gestire ulteriori gruppi di utenti (es. studenti) o altre modalità di autenticazione come quelle standard di drupal, open id o altro. Drupal come gestisce l’autenticazione? R. Modulo LDAP 7.x -1.0-beta12 Menu: Authentication logon options, Allowable Authentications selezionare Mixed mode. Drupal authentication is tried first. On failure, LDAP authentication is performed. help at http://drupal.org/node/997082 LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 16 Download modulo LDAP Al momento sul mio sito è up questo modulo: Versione 7.x-1.0-beta12 Downloads tar.gz (192.38 KB) LDAP Sapienza - Mario Baioli zip (271.48 KB) 21/12/2015 Data 15 aprile 2013 Links notes Pagina 17 Modulo LDAP 7.x-1.0-beta12 attivo nome versione LDAP Authentication 7.x-1.0-beta12 Implements LDAP authentication Richiede: LDAP Servers (attivato) Richiesto da: LDAP SSO (attivato) LDAP Authorization 7.x-1.0-beta12 Implements LDAP authorization (previously LDAP Groups) Richiede: LDAP Servers (attivato) Richiesto da: LDAP Authorization - Drupal Roles (attivato), LDAP Authorization - OG (Organic Groups) (disattivato) LDAP Authorization Drupal Roles 7.x-1.0-beta12 Implements LDAP authorization for Drupal roles Richiede: LDAP Authorization (attivato), LDAP Servers (attivato) LDAP Authorization OG (Organic Groups) 7.x-1.0-beta12 Implements LDAP authorization for Organic Groups Richiede: LDAP Authorization (attivato), LDAP Servers (attivato), Og (mancante) LDAP Feeds 7.x-1.0-beta12 VERY MUCH IN ALPHA STATE. Included feeds fetcher for a generic ldap query and ldap entry parser to turn fetcher data into feeds compatible parser result. Used to automate content creation based on ldap queries. Richiede: Feeds (mancante), LDAP Servers (attivato), LDAP Query (attivato) LDAP Help 7.x-1.0-beta12 LDAP Help for configuration and reporting issues. Richiede: LDAP Servers (attivato) LDAP Profile 7.x-1.0-beta12 Implements LDAP Profile. Allows you to map Drupal profile fields to LDAP profile fields Richiede: LDAP Servers (attivato) LDAP Query 7.x-1.0-beta12 LDAP Query Builder and Storage for queries used by other ldap modules such as ldap feeds, ldap provision, etc Richiede: LDAP Servers (attivato) Richiesto da: LDAP Feeds (disattivato), LDAP Views (attivato) LDAP Servers 7.x-1.0-beta12 Implements LDAP Server Configuration Richiesto da: LDAP Authentication (attivato), LDAP Authorization (attivato), LDAP Authorization - Drupal Roles (attivato), LDAP Authorization - OG (Organic Groups) (disattivato), LDAP Query (attivato), LDAP Feeds (disattivato), LDAP Help (attivato), LDAP Profile (attivato), LDAP SSO (attivato), LDAP Views (attivato) LDAP SSO 7.x-1.0-beta12 Implements Single Sign On (SSO) LDAP Authentication Richiede: LDAP Servers (attivato), LDAP Authentication (attivato) LDAP Views 7.x-1.0-beta12 Implements LDAP integration with ViewsRichiede: LDAP Query (attivato), LDAP Servers (attivato), Views (attivato), Chaos tools (attivato) LDAP Sapienza - Mario Baioli descrizione 21/12/2015 Pagina 18 LDAP Sapienza - Mario Baioli 21/12/2015 Pagina 19