Autenticazione degli utenti

L'user authentication è un modo avanzato per eseguire un controllo degli accessi via web a determinati file o directory sulla base di login e password configurabili.

Tramite moduli autonomi, Apache supporta diversi metodi per gestire i dati relativi a login e password, che si basano su basi date diverse.

Moduli standard
- mod_auth : Autenticazione base con file di testo
- mod_auth_anon : Autenticazione anonima
- mod_auth_dbm : Autenticazione con DBM database
- mod_auth_db : Per i sistemi che DB database
- mod_digest : Digest Authentication con file

Moduli sviluppati da terze parti
- mod_auth_msql : Autenticazione base con supporto di MSQL
- mod_auth_mysql : Autenticazione base con supporto di MYSQL
- mod_auth_ldap : Autenticazione base con supporto di LDAP
- mod_auth_kerberos : Autenticazione base con supporto di kerberos
- mod_auth_radius : Autenticazione base con supporto di radius
- mod_auth_smb : Autenticazione base con Windows
- mod_auth_oracle : Autenticazione base con supporto di Oracle

Per avere una lista completa si può fare riferimento al sito ufficiale http://modules.apache.org/
Da tenere conto che i moduli sviluppati da terze parti, cioè non sviluppati dal core team di Apache, non sono stati testati a fondo e richiedono a volte un'intervento massiccio per l'installazione causa dipendenze con librerie che nell'installazione standard di Linux e di Apache sono escluse.

Qualunque sia il modulo utilizzato vengono sempre richieste le seguenti direttive per abilitare l'user authentication:
AuthName
Il nome o il realm che Apache invia al modulo che si occupa dell'autenticazione per definire le varie "zone" che richiedono l'autenticazione. E' una stringa di testo definibile arbitrariamente, che viene visualizzata nella finestra di richiesta Nome Utente e Password del browser.
AuthName "Area Clienti"

AuthType
E' la direttiva che si occupa di inviare username e password, può acquisire due valori Basic e Digest, la differenza primaria è che la configurazione "Digest", a differenza di quella "Basic", invia username e password criptati utilizzando MD5, sfortunatamente non è del tutto supportata.
AuthType Basic

Auth???UserFile
Ogni modulo ha una specifica direttiva per indicare dove Apache troverà le informazioni per eseguire il check su password ed utente.
Per il modulo mod_auth avremo
AuthUserFile /usr/local/apache/private/passwd
Oppure per il modulo mod_auth_dbm
AuthDBMUserFile  /usr/local/apache/private/passwd.dbm

Direttiva opzionale per definire il gruppo
E' possibile tramite la direttiva Auth???GroupFile aggiungere un ulteriore check per l'autenticazione, aggiungendo il criterio del gruppo di appartenenza. Come sopra avremo una direttiva specifica per ogni modulo (non tutti i moduli la supportano)
Per il modulo mod_auth avremo
AuthGroupFile /usr/local/apache/private/group
Oppure per il modulo mod_auth_dbm
AuthDBMGroupFile /usr/local/apache/private/group.dbm

Require
Direttiva che permette di determinare quale criterio è assolutamento valido per abilitare l'accesso alla risorsa:
require valid-user
Auth???Authoritative
Altra direttiva opzionale che permette di determinare quale tipo di autenticazione è autoritativa rispetto ad un altra, quando si hanno più tipi di autenticazioni attive sulla stessa risorsa.

Genericamente tutti i tipi di autenticazione seguono il seguente schema:
<Location /private>
AuthName "Nome del realm"
AuthType Basic | Digest
Auth???UserFile /path/to/user/file
Auth???GroupFile /path/to/group/file
require valid-user | user utente1 utente2... | group gruppo1 gruppo2 ...
Auth???Authoritative on | off
</Location>


Anche nel caso dell'user authentication è possibile utilizzare il file .htaccess, anche se non è abilitato di default. Per abilitare tutte le direttive per l'autenticazione occorre appoggiarsi ad AllowOverride:
AllowOverride AuthConfig

Privacy Policy