Bookmark and Share
Document Actions

Autenticazione con LDAP

Up one level
LDAP è un popolare servizio di directory. Viene usato come repository centralizzato delle utenze. In questa sezione vi verrà spiegato il suo utilizzo.

In questa sezione vedrete come autenticare utenti tramite LDAP. Dovrete installare solo l'egg Python plone.app.ldap (che un tempo era chiamato simplon.plone.ldap), e Plone installerà autometicamente tutte le dipendenze necessarie. Qui sono elencate tutte le dipendenze di cui avrete bisogno per  plone.app.ldap:

  • python-ldap, che fornisce un API orientato agli oggetti per accedere ai server LDAP dal codice Python.
  • LDAPUserFolder, che è una cartella utente sostitutiva che autentica gli utenti Zope contro LDAP.
  • LDAPMultiPlugins, che fornisce i plug-in PluggableAuthService che interagiscono con LDAP.
  • Products.PloneLDAP, che è costruito sui prodotti LDAPMultiPlugins e LDAPUserFolder e contiene i plug-in che vi permettono di usare LDAP e i server Active Directory in un sito Plone, rendendo più facili le connessioni LDAP.

Grazie all'egg Python plone.app.ldap, ora è più facile creare delle connessioni LDAP in un sito web Plone e gestire i server LDAP e Active Directory tramite il pannello di configurazione di Plone con un'interfaccia utente amichevole; in altre parole non si ha direttamente a che fare con lo strumento acl_users e la ZMI. Gli utenti avanzati possono preferire di aver a che fare direttamente con i plug-in PAS invece di lavorare con questi sistemi che hanno un'interfaccia utente molto più amichevole ma consentono minore controllo. Comunque, se volete cominciare ad installare il supporto LDAP velocemente, il prodotto  plone.app.ldap può essere molto utile.

Nota: questo prodotto funziona con Plone 2.5 o versioni più recenti (è altamente raccomandato l'utilizzo della versione Plone 3.x)

Installare Plone.app.ldap

Ora mostreremo come installare  plone.app.ldap e le altre dipendenze. Se avete un buildout esistente, dovete solo aggiungere l'egg Python  plone.app.ldap alla sezione buildout:eggs e nella sezione instance:zcml, come avete visto nel capitolo 2 nella sezione “Installare un componente aggiuntivo”, è mostrato qui:

[buildout]

...

eggs =

   ...

    plone.app.ldap

...

zcml =

    ...

    plone.app.ldap

A questo punto, si consiglia di eseguire lo script buildout e riavviare la vostra istanza Zope:

$ ./bin/buildout

$ ./bin/instance restart

Notate che la libreria python-ldap è una dipendenza obbligatoria. Se avete già installato questa libreria nella vostra installazione Python, è possibile impedire l'installazione automatica dall'indice del pacchetto Python, come già visto nella sezione [zope2] della configurazione del vostro buildout. Aggiungete questo codice:

additional-fake-eggs = python_ldap

Altrimenti se volete eseguire l'installazione automatica completa, la procedura è un po' più complicata a causa di una mancata corrispondenza di versione  con l'egg python-ldap e la libreria Open-LDAP. Potete risolvere questo problema compilando la libreria OpenLDAP come una parte del buildout con la ricetta  zc.recipe.cmmi; comunque non parleremo di questo metodo di installazione perché non fa parte degli obiettivi del capitolo. Potete trovare altre informazioni su www.openldap.org.

Configurare la connessione LDAP

A questo punto, potete andare nel pannello di controllo di Plone e cliccare su configurazione del sito; poi cliccate nell'area Add-on Product, e installate il supporto LDAP. Fatto ciò, nel pannello di controllo Plone nell'area Add-on Product Configuration sarà disponibile un nuovo collegamento: LDAP Connection. Cliccate questo link e otterrete una schermata simile alla Figura 8-6.

pannello configurazione LDAP

Figura 8-6. Il pannello di configurazione LDAP, dove potete facilmente configurare la vostra connessione LDAP

In questo pannello di controllo, potete configurare una connessione LDAP. Potete usare sia un server standard LDAP sia un server Microsoft Active Directory. Questo pannello è diviso in tre sezioni:

  • Global Settings, dove le impostazioni di configurazione ricorpono un ruolo globale
  • LDAP Schema, dove potete configurare la mappa dello schema LDAP
  • LDAP Servers, dove potete aggiungere uno o più server LDAP

Potete compilare tutte le informazioni sulla configurazione globale, specificando il tipo di server LDAP e le altre proprietà di base dello schema della vostra configurazione LDAP, come il DN (nome distintivo) degli utenti/gruppi e altre impostazioni specifiche che dipendono dalla configurazione del vostro server LDAP. In seguito viene creata la mappatura dalle proprietà utente LDAP e le proprietà Plone. Infine dovrete aggiungere uno o più server LDAP, presupponendo che loro ascoltino sulla porta standard 389 (l'interfaccia plone.app.ldap non vi lascia specificare la porta del server, quindi dovete avere a che fare con i plug-in base nello ZMI). Se vengono usati più server, verranno chiamati in ordine 'decrescente'.

Il gioco è fatto! Avete collegato una nuova sorgente LDAP di utenti, e ora potete cercare gli utenti definiti sul vostro server LDAP. E' importante ricordare che avete visto solo il front-end del pannello di configurazione. Tutte le vostre modifiche si rifletteranno sul plugin ldap PAS nello strumento acl_users (molto meno user-friendly). Se siete curiosi, potete dare un'occhiata allo strumento acl_users dove dovreste trovare un nuovo elemento relativo alla vostra connessione LDAP un plug-in PAS chiamato ldap. Se immettete questo plug-in, il tab Activate vi premetterà di abilitare o disabilitare le caratteristiche PAS come l'autenticazione, il censimento utenti, e così via, come abbiamo visto prima con l'amministratore source_myuser che abbiamo aggiunto nella sezione “Gestire utenti tramite lo strumento acl_users” di questo capitolo. Si noti che non c'è interfaccia per queste impostazioni; dovete anche sapere che con la versione corrente di plone.app.ldap, se cambiate qualcosa lavorando direttamente con ZMI, le modifiche non si rifletteranno sull'interfaccia plone.app.ldap per problemi di cache.

Configurare la connessione LDAP tramite ZMI

Aver a che fare direttamente con il plug-in PAS conferisce agli utenti più controllo rispetto a quando usano l'interfaccia Plone plone.app.ldap. Per esempio, con la versione corrente di plone.app.ldap, non potete configurare una porta LDAP diversa da quella impostata di default – ma con il plug-in ldap, è possibile. In questo caso, si dovrà configurare la connessione tramite ZMI su http://localhost:8080/mysite/ acl_users/ldap/acl_users/manage_servers. Potete raggiungerlo andando sullo strumento acl_users, cliccando l'elemento “ldap”, il tab Contents, “acl_users” e infine cliccando sul tab LDAP Severs. Arrivati a questo punto, potete assegnare la porta LDAP, e confermare cliccando il pulsante Add Server. Si noti anche che cambiando impostazioni direttamente dal plug-in ldap tramite la ZMI non aggiornerà l'interfaccia plone.app.ldap. Un altro caso in cui bisogna trattare direttamente con il plug-in PAS è disabilitando la caratteristica PAS User Adder sul tab Activate della nuova sorgente ldap. Dovete solo deselezionare l'opzione User_Adder e confermare cliccando il pulsante Update. Ora Plone vi permetterà di autenticare utenti tramite una sorgente LDAP, ma non di creare nuovi utenti sulla medesima sorgente. Questa è un'impostazione comune per siti chiusi all'esterno come intranet in quanto, a volte, gli amministratori LDAP preferiscono gestire gli utenti usando i propri strumenti personalizzati per LDAP. Nel tab Contents potrete trovare un nuovo elemento "utente amministratore" con tutte le configurazioni da voi create attraverso il pannello di configurazione plone.app.ldap. Qui ci sono alcune schede utili:

  • Il tab "Configure": contiene le proprietà base di  LDAPUserFolder. Potete specificare tutte le impostazioni LDAP che dipendono dal vostro ambiente come il DN base per i gruppi e gli utenti, il tipo di cifratura della password, e così via.
  • Il tab LDAP Schema: dove potete mappare gli attributi LDAP alle proprietà utente di Plone.
  • Il tab Users: dove potete cercare gli utenti esistenti o aggiungere nuovi utenti specificando l'appartenenza al gruppo.
  • Il tab Groups: mostra tutti i record del gruppo LDAP trovato sul server LDAP e ne permette l'aggiunta o l'eliminazione. E' inoltre possibile mappare i gruppi LDAP ai ruoli Zope, conferendo in tal modo un ruolo di Zope ai membri di un gruppo LDAP. Si noti che con il plug-in ldap la configurazione della mappatura gruppo-ruolo non è disponibile.

Abbiamo appena visto come sia possibile impostare Plone con LDAP senza scrivere una singola linea di codice. Una volta installate tutte le dipendenze, potete facilmente e velocemente inserire una sorgente esistente di utenti su Plone con un po' di lavoro e inserire una  sorgente esistente LDAP dentro al vostro Plone. È possibile utilizzare uno strumento come plone.app.ldap per eseguire queste configurazioni con una interfaccia amichevole che permette di avviare rapidamente la configurazione di LDAP con il minimo sforzo; quindi se siete interessati, potete dare un'occhiata al plug-in PAS direttamente nello strumento acl_users al fine di capire come funziona. È possibile avere un maggiore controllo o persino collegare una fonte LDAP a partire da zero con PAS plug-ins e sbarazzarsi di plone.app.ldap.

by Dario Pollino last modified 2010-03-19 16:45
Contributors: Maurizio Delmonte, Davide Moro, Alice Narduzzo, Fabrizio Reale, Enrico Barra, Andrea Cannizzaro, Andrea D'Este, Maurizio Lupo, Giuseppe Masili, Dario Pollino, Matteo Sorba.