Fasi autenticazione
- accesso: gestito da mod_access tramite direttive allow e deny
- autenticazione: tutti i moduli che cominciano con mod_auth. In forma basic e digest
- autorizzazione: usa la direttiva require
mod_auth
Ci sono moduli basic per autenticarsi usando mysql, kerberos, radius, windodows, oracle, pam.
Ci sono anche moduli per linguaggi php , perl, fastcgi, ruby ecc.
mod_digest
Requisiti per la configurazione dell'autenticazione
Ci sono diversi tipi di moduli alcuni alcune cose sono comuni a tutti.
- AuthName: indica l'area da autenticare, se ci sono spazi va passata tra virgolette
- AuthType: Basic che trasmette in chiaro e Digest che usa md5 per tramettere username e password, non è supportata da tutti i moduli.
- tipo e sorgente di autenticazione: direttive cambiando in base al tipo di autenticazione. Basic AuthUSerFile o AuthDBMUserFile
- Gruppi di utenti: autenticazione su gruppi invece che su utenti singoli, è opzionale AuthGroupFile o AuthDMBGroupFile
- Utenti validi in una posizione: di solito è la Require
- Utenti privi di autenticazione: è facoltativa, autenticazione su più livelli per consentire quello che un'altro aveva negato
htpasswd
Per la forma più elementare, meno sicura ma anche la più compatibile con i browser bastano queste righe di codice
Creare il file con gli utenti e le password
htpasswd -c /etc/apache2/.htpasswd jane
htpasswd /etc/apache2/.htpasswd peppe
attenzione con -c crea il file ma se già esiste lo cancella e ricrea, senza opzioni aggiunge username, -D elimina l'utente
Quando si fanno le operazione con il comando non è necessario riavviare l'apache però vanno messi anche sotto.
Ecco la sintassi completa
htpasswd -b [ -c ] [ -m | -d | -p | -s ] [ -D ] passwdfile username password
Esempio Basic
Poi basta aggiungere le righe di codice, sotto io l'ho messo dentro un virtual host
<VirtualHost *>
ServerName url.dominio.com
ProxyPass /url http://192.168.199.15/url
ProxyPassReverse /url http://192.168.199.15/url
<Location />
AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthUserFile /etc/apache2/bp-password
Require user bpuser utente
</Location>
</VirtualHost>
Esempio Digest
L'esempio della guida di apache è questo
Bisogna abilitare il modulo del digest altrimenti da errore al reload delle configurazioni
a2enmod auth_digest
Questo pezzo di codice sottostante va dentro il virtual host, se come parametro di Location si mette solo / prende tutto il virtual host altrimenti la parte indicata
<Location /private/>
AuthType Digest
AuthName "privatearea"
AuthDigestDomain /private/ http://mirror.my.dom/private2/
AuthDigestProvider file
AuthUserFile /web/auth/.digest_pw
Require valid-user
</Location>
AuthDigestDomain: si possono specificare più uri
AuthDigestAlgorithm MD5|MD5-sess : scegliere l'algoritmo da usare per il digest, il primo MD5 è più largamente supportato.
AuthDigestProvider file : quale provider viene usato per l'autenticazione file è il default mod_authn_file deve essere presente.
Per creare il file di digest serve usare l'utility htdigest
Che si usa così:
htdigest -c passwdfile realm username
L'opzione -c va usata solo la prima volta quando si crea altrimenti il file viene cancellato.
Esempio relativo a quello sopra
htdigest /web/auth/.digest_pw privatearea pippo
Dato che il digest permette l'autenticazione da più realm bisogna fare in modo che il real indicato in AuthName sia uguale a quello nella generazione del file htdigest altrimenti non funziona.