Featured Posts

:: syscallme :: Rss

Semplice Autenticazione HTTP via Ldap

Posted on : 22-10-2009 | By : daniele | In : Linux, Simple

1

Un brevissimo articolo, tanto per rispolverare il blog che prende polvere da un po’, e anche per scrivere una banalità che però alla fine mi dimentico sempre e perdo molto più tempo a ricercarne l’how-to che ad implementarla. E ciò e male.

In ogni modo l’obiettivo di questo piccolo post/piccolissimo how-to è quello di dare le indicazioni corrette per implementare una autenticazione HTTP via ldap su delle vostre pagine web.

Il contesto è semplice: avete una pubblicazione web (un sito, delle info, una attività di un vostro sviluppo che vi occorre online ma che non deve essere accessibile da tutti e indicizzabile da google neanche per sbaglio). E oltre a questo, avete anche un server OpenLdap che potete sfruttare per le autenticazioni.

Vediamo come si fa

Una autenticazione classica HTTP richiede solitamente la creazione di un file di password (che generalmente viene creato attraverso l’utilizzo del binario htpasswd di Apache). All’interno di esso, Apache, si preoccupa di creare una associazione uno ad uno tra il nome utente scelto e la cifratura della password scelta. Sarà lo stesso Apache ad interpretare poi quel file per consentire o meno l’autenticazione, quando se lo troverà nella configurazione del suo virtualhost o nell’.htaccess del proprio contenuto web.

Demandare l’autenticazione ad Ldap sicuramente è una soluzione molto più pratica (l’utente ha già una coppia di credenziali e usa sempre quella per loggarsi a qualsiasi cosa) ma si fa i conti con una piccola differenza logica rispetto allo scenario descritto sopra. Nel file di accesso creato con htpasswd, c’è una associazione uno ad uno scritta più o meno così:

miousername:hashdellamiapassword

In questo modo, con “una sola fava” si vanno a prendere “due piccioni”, perchè ad Apache dai due tipi di informazioni: quali sono gli username abilitati ad accedere all’area riservata e quale è la loro password.

Mentre se demandi su ldap l’autenticazione HTTP, hai il problema di dire ad Apache quali sono gli utenti che ne debbono giovare.

Ok andiamo al dunque. Per implementare una HTTP Basic Authentication via Ldap in Apache, è sufficiente aggiungere il seguente blocco di configurazione all’interno di una direttiva del proprio virtualhost, oppure (più semplicemente) all’interno del proprio file .htaccess.

# LDAP Authentication
AuthName "My Restricted Area"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL ldap://my.ldap.com:389/dc=mydomain,dc=com?uid
AuthLDAPBindDN "cn=My ReadOnly Account,ou=dept,dc=mydomain,dc=com"
AuthLDAPBindPassword password
Require valid-user

Commentiamo stringa per stringa.

AuthName: Label per la vostra area riservata. Qui potete scrivere veramente quello che vi pare!
AuthType: il tipo di autenticazione scelta. La nostra è Basic.
AuthBasicProvider: rappresenta il provider dal quale vogliamo ottenere una autenticazione “basic”. Nel nostro caso è, appunto, ldap.
AuthzLDAPAuthoritative: è un sistema di fallback. Se è settato su “off” il sistema prova in cascata altri sistemi di autenticazione se fallisce quello su ldap. Nel nostro caso, non essendoci altri sistemi di autenticazione, lo abbiamo settato su “on”.
AuthLDAPURL: è la stringa di connessione. Non basta passargli solo l’indirizzo del server, ma è necessario dargli anche (dopo lo /) la path dell’alberatura ldap dalla quale volete che Apache permetta l’autenticazione. Nel nostro caso siamo stati molto generici: tutte le utenze sotto la radice vengono prese in considerazione. Dopo il punto interrogativo è necessario aggiungere quale è l’attributo ldap per il quale fare la ricerca. Nel nostro caso è “uid”, cioè lo userid dell’utente.
AuthLDAPBinDN: non è un parametro obbligatorio. Dipende da come è stato configurato il vostro ldap. Se il vostro Ldap non è accessibile in sola lettura da utente “anonymous” è necessario specificare quale è l’utente che ha accesso al server ldap. Se vi trovate in quest’ultimo caso è necessario specificare anche la password (AuthLDAPBindPassword).

In ultimo diciamo al nostro apache che è obbligatorio un utente valido (require valid-user) per permettere l’accesso.

Questa configurazione è il primo livello di complessità: manca un file che gestisce la profilazione sugli accessi (in questo modo, infatti, tutti gli utenti di ldap possono loggarsi con successo), manca un sistema di fallback, eccetera. Però spesso è la cosa più utile che ci serve ;)

Comments (1)

[...] Apache: autenticazione HTTP via LDAP [...]

Write a comment