Tesseract

You are here:

Home Forum Webmaster e sviluppo web Autenticazione utente tramite Apache
 Tesseract Forum
Welcome Guest   [Register]  [Login]
 Subject :Autenticazione utente tramite Apache.. 2009-06-19 16:29:37 
tester
Joined: 2006-05-26 16:54:04
Posts: 29
Location
Autenticazione utente tramite Apache

Per controllare l'accesso degli utenti ai documenti presenti su di un web server Apache sono necessari due passi fondamentali:

1 - creare un file contenente username e password
2 - indicare le risorse da proteggere e gli utenti ai quali sarà consentito l'accesso


Creazione file delle password

Per memorizzare le informazioni relative agli utenti e relative password per l'accesso ai contenuti è necessario creare un apposito file.

Tale file, per ovvie ragioni di sicurezza, deve essere registrato in una posizione tale da non essere accessibile da web. Esso, inoltre, non può essere editato direttamente a mano; le password, infatti, sono registrate in forma cifrata.

Il programma utilizzato per tale gestione è "htpasswd", la cui sintassi è la seguente:

-------------------------------------------
htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile username password
htpasswd -n[mdps] username
htpasswd -nb[mdps] username password
-c Create a new file.
-n Don't update file; display results on stdout.
-m Force MD5 encryption of the password.
-d Force CRYPT encryption of the password (default).
-p Do not encrypt the password (plaintext).
-s Force SHA encryption of the password.
-b Use the password from the command line rather than prompting for it.
-D Delete the specified user.
On Windows, NetWare and TPF systems the '-m' flag is used by default.
On all other systems, the '-p' flag will probably not work.

-------------------------------------------

Per iniziare è necessario creare il file in questione indicando un primo nuovo utente da inserire nel file stesso:

htpasswd -c /etc/apache2/users carlo

Il comando, con l'opzione -c, crea il file "users" nella directory /etc/apache2/ chiedendo la password da associare all'utente (nel nostro caso, l'utente "carlo").

Il contenuto del file "users" dovrebbe essere ora simile al seguente:

-------------------------------------------
carlo: xx1LtbDbOY4/E
-------------------------------------------

dove si individua il primo campo contenente il nome utente ed il secondo campo, separato dal simbolo ":" contenente la password in forma cifrata.

Per inserire nuovi utenti all'interno del file riusiamo il comando htpasswd, omettendo ovviamente il flag -c in quanto il file è stato già creato; ad esempio, il comando:

-------------------------------------------
htpasswd /etc/apache2/users giuseppe
-------------------------------------------

aggiunge al file /etc/apache2/users l'utente "giuseppe"


Configurazione del server

La configurazione del server prevede l'indicazione delle sezioni del sito che devono essere accessibili esclusivamente ad un utente, o ad un gruppo di utenti, indicati all'interno del file creato con il comando htpasswd.

Per proteggere una specifica directory bisogna riportare dettagliate indicazioni nella sezione <Directory> del file di configurazione principale di Apache "httpd.conf" (oppure nel file access.conf se quest'ultimo è richiamato dal file di configurazione principale ).

Tali indicazioni possono essere riportate anche in un file esterno, chiamato ".htaccess"

I file .htaccess sono normali file di testo all'interno dei quali è possibile indicare specifiche direttive di configurazione per Apache. Quando Apache deve processare un file verifica se esiste nella cartella del file in questione un file di nome .htaccess ed in tal caso lo interpreta.

Da notare che la lettura del file .htaccess avviene ad ogni caricamento della pagina per cui in caso di modifiche al file queste saranno immediatamente disponibili senza la necessità di riavviare il web server (cosa che deve avvenire nel caso di modifica ai file di configurazione standard di apache).

Nel caso tali impostazioni non dovessero funzionare il motivo potrebbe dipendere dalla clausola "AllowOverride".

Infatti, AllowOverride controlla quali direttive possono essere incluse e gestite dai file .htaccess.
Il valore di AllowOverride può essere "All", "None", o una qualsiasi combinazione delle seguenti parole chiave:

Options FileInfo AuthConfig Limit Indexes

Nel nostro specifico caso, relativo all'autenticazione, è necessario utilizzare la direttiva "AllowOverride AuthConfig"

Vediamo un esempio:

<Directory /var/www/htdocs/test>
AuthName "Zona protetta"
AuthType Basic
AuthUserFile /etc/apache2/users
require valid-user
</Directory>

dove l'inclusione nei tag <Directory></Directory> è necessaria qualora si inseriscano tali direttive nei file di configurazione standard e non, quindi, nei file .htaccess

Vediamo in dettaglio tali direttive:

AuthName indica un nome per la zona, ovvero l'insieme di file e cartelle, per le quali si vuole controllare l'accesso. Esso rappresenta quello che in gergo tecnico viene definito "realm". Un realm rappresenta, appunto, una zona del file system, generalmente una directory con eventuali sottodirectory che si intende proteggere. Una volta avvenuta l'autenticazione relativamente ad un certo realm questa viene conservata per la sessione corrente e sarà valida anche in una zona differente purchè avente lo stesso nome di realm.

AuthType indica il protocollo da utilizzarsi per l'autenticazione. Basic è quello predefinito.

AuthUserFile indica al server il nome e la posizione del file da contenente le credenziali di accesso.
Nel caso si volessero usare dei gruppi, anzichè gestire il singolo utente, è possibile utilizzare la direttiva AuthGroupFile

require indica gli utenti che possono avere accesso al realm specificato: Nel caso si voglia abilitare tutti gli utenti indicati nel file delle password è sufficiente valorizzare la direttiva require con il valore valid-user.
In caso contrario, nel caso si volesse autorizzare un sottoinsieme di utenti sarà sufficiente indicare i loro nomi dopo la direttiva stessa. Ad esempio:

require user carlo giuseppe

abilita all'accesso i soli utenti "carlo" e "giuseppe"

Nel caso di situazioni più complesse è possibile ricorrere alla gestione dei gruppi utilizzardo la direttiva AuthGroupFile e specificando il file contenente le informazioni sui gruppi stessi. Un file di tale tipo è organizzato in una sequenza di righe contenenti i nomi dei gruppi e, separati dal sibolo ":", l'elenco degli utenti appartenenti allo specifico gruppo:

amministratori:carlo giuseppe
segreteria:anna isabella antonella


Per l'autenticazione si può poi procedere, ad esempio, come segue:

require group amministratori segreteria
require user carlotta

Tali direttive abilitano, dopo l'inserimento delle giuste credenziali, gli utenti dei gruppi "amministratori" e "segreteria" e l'utente "carlotta", all'accesso alle risorse del realm.

Per chiudere occorre notare come la metodologia di controllo degli accessi tramite file delle password sia utilizzabile con un numero non particolarmente elevato di utenti. In caso contrario, a causa della lentezze nelle operaioni di accesso alle credenziali su file, risulta necesssario un metodo alternativo come, ad esempio, l'autenticazione degli utenti tramite accesso a database utilizzando specifici moduli per apache.

Carlo Mazzone
www.tesseract.it

IP Logged
Page # 


Powered by ccBoard