Le direttive del Web server Apache possono tornarci utili per stabilire metodi di autorizzazione per l’accesso alla DocumentRoot utilizzando la classica procedura basata su un nome utente (user name) e su una parola chiave (password).
Sarà possibile cifrare i dati di accesso inserendoli in un apposito file chiamato htpasswd con l’unica condizione che il nome utente e la parola chiave siano differenti da quelli già indicati per l’accesso al sistema in cui Apache è stato installato.
Oltre ai dati di accesso, è possibile stabilire dei gruppi, ognuno facente capo ad un unico nome; la metodologia "per gruppi" permetterà di stabilire regole d’accesso valide per tutti gli utenti appartenenti ad essi. Otterremo questo risultato semplicemente agendo sulla direttiva AuthName a cui passeremo come parametro il nome necessario all’autorizzazione.
Tramite AuthName, è possibile descrivere all’utente il tipo di autorizzazione richiesta in modo che egli sia sempre in grado di utilizzare la procedura corretta a seconda dei casi.
Un’altra direttiva fondamentale è AuthType, riferita alla tipologia di autenticazione; in ogni caso per Apache quest’ultima dovrà essere settata come Basic o come Digest. Nel caso di Basic, l’autenticazione consisterà in un semplice invio dei dati inseriti dall’utente, con Digest, invece, nome utente e password verranno criptati utilizzando il sistema di codifica MD5; quest’ultimo metodo, in linea teorica preferibile, è purtroppo al momento non ben supportato.
Ad AuthType segue AuthUserFile, una direttiva a cui dovremo far passare come parametro il percorso in cui si trova il file che contiene i dati necessari per l’autenticazione.
Abbiamo poi AuthGroupFile, una direttiva che può essere inserita a discrezione dell’amministratore del Web Server nel caso in cui egli desideri fornire ad Apache una lista di utenti appartenenti ad uno stesso gruppo per i quali valgono le medesime regole di autenticazione. Se intendiamo impostare AuthGroupFile, sarà sufficiente passare come parametro a questa direttiva il percorso completo che porta al file contenente l’elenco degli appartenenti al gruppo.
Possiamo poi specificare tre ulteriori direttive: require user, require group e require valid-user. Nel caso di require user è necessario indicare quali utenti sono autorizzati all’accesso; nel caso di require group è necessario indicare quali gruppi di utenti sono autorizzati all’accesso; infine, nel caso di require valid-user tutti vengono autorizzati all’accesso.
Alla luce di ciò che abbiamo appena detto, possiamo fare un esempio completo di container per le direttive di autorizzazione:
<Directory /PATH/area_riservata></p>
AllowOverride None
Options Indexes
AuthName Area Riservata
AuthType Basic
AuthUserFile /PATH/httpd/conf/.htpasswd
AuthGroupFile /PATH/httpd/conf/.htgroup
require user Amministratore
</Directory>