Apache: personalizzare il sistema di autenticazione

15 giugno 2010

Proseguiamo la trattazione dei meccanismi di autenticazione forniti da Apache con un argomento un po’ particolare: come utilizzare un programma esterno al web server per verificare le credenziali immesse dall’utente. In questo articolo vedremo, in altre parole, come “passare” il controllo della password di autenticazione ad un programma esterno ad Apache come, ad esempio, uno script PHP.

Nei precedenti articoli, Apache: autenticazione di base con .htaccess e Apache: autenticazione digest e utilizzo di file Dbm, abbiamo descritto, o almeno menzionato, molti moduli che consentono di accedere ai più comuni sistemi di memorizzazione delle password: file di testo, file binari DBM o DB, tabelle di database, directory Ldap.

Potremmo però trovarci nella sfortunata situazione in cui non esista il modulo appropriato per comunicare con il sistema da noi adottato. Scriverne uno ex-novo risulta piuttosto complesso e richiede conoscenze non banali dei meccanismi di funzionamento di Apache. Per fortuna possiamo contare su un modulo particolarmente flessibile mod_authnz_external, grazie al quale ci limiteremo a redigere il programma che effettuerà l’autenticazione. Il relativo progetto è ospitato sulle pagine di Google Code, quindi non ci resta che fare rotta verso quella direzione.

Nelle prossime pagine introdurremo il modulo e creeremo un esempio pratico di utilizzo facile da comprendere.

Mod_authnz_external o mod_auth_external?

Avevamo già accennato al sistema di autenticazione ed autorizzazione introdotto con Apache 2.1. Alla base dello schema vi sono i due moduli di autenticazione mod_auth_basic e mod_auth_digest. Essi comunicano con i provider di autenticazione che forniscono il servizio di autenticazione vero e proprio. I nomi dei moduli di questa seconda categoria hanno il prefisso mod_authn_, come mod_authn_file o mod_authn_dbm. Infine per ultimi entrano in azione i moduli di autorizzazione il cui prefisso è mod_authz_, come mod_authz_user o mod_authz_groupfile. Un ultimo gruppo di moduli, che integra le funzioni di provider di autenticazione e di autorizzazione, ha come prefisso mod_authnz_.

È chiaro dunque come mod_authnz_external, pur avendo sostanzialmente le stesse funzionalità di mod_auth_external, si integri nel più recente schema. Attenzione dunque alla versione del programma che andremo a prelevare, essa dovrà corrispondere alla versione di Apache installata. Di seguito presupporremo di lavorare con Apache 2.2 e quindi di utilizzare mod_authnz_external 3.2.

Il modulo è strutturato in modo che eventuali malfunzionamenti nel programma esterno non possono mandare in crash il web server. Il programma esterno, d’altro canto, può girare con un utente diverso da Apache (setuid). In questo modo possiamo concedere solo a quest’ultimo l’accesso al sistema di memorizzazione delle password e concentrare su di esso gli sforzi volti a migliorare la sicurezza. La presenza di bug in Apache, o in CGI da esso eseguiti, non consentiranno comunque l’accesso alle credenziali.

È chiaro che l’esecuzione di un ulteriore programma richiederà risorse aggiuntive, il che rappresenta una caratteristica negativa rispetto agli altri moduli.

Un’ultima considerazione prima di passare all’azione: mod_authnz_external funziona con l’autenticazione di base HTTP, ma non con l’autenticazione digest. Il che ha una sua logica: in caso contrario il sistema di memorizzazione delle password dovrebbe prevedere il medesimo algoritmo di cifratura.

Nella prossima pagina vedremo come installare il modulo mod_authnz_external.

Se vuoi aggiornamenti su Apache: personalizzare il sistema di autenticazione inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Apache: personalizzare il sistema di autenticazione

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy