Apache2 Autenticazione

Fasi autenticazione

  1. accesso: gestito da mod_access tramite direttive allow e deny
  2. autenticazione: tutti i moduli che cominciano con mod_auth. In forma basic e digest
  3. 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.
Salvo diversa indicazione, il contenuto di questa pagina è sotto licenza Creative Commons Attribution-ShareAlike 3.0 License