Michele Liberi software
versione 1.03, 1 settembre 2022
|
|
Michele Liberi
mail: mliberi@gmail.com
cell: 3485211456
|
liberix
Tutti i programmi di questa sezione sono in grado di gestire il concetto di sessione, ovvero di effettuare un riconoscimento dell'utente sulla base delle credenziali di accesso.
Grazie ad un sofisticato algoritmo a doppia chiave di cifratura, la pagina HTML/javascript che gestisce il login è in grado di trasmettere la password di accesso in modo assolutamente sicuro anche su protocollo HTTP.
Per come è stato strutturato l'algoritmo non è possibile ottenere la password intercettando il traffico tra browser e server HTTP, neanche nell'ipotesi pessimistica che il malintenzionato intercettatore conosca l'algoritmo utilizzato per cifrarla.
Il riconoscimento dell'utente può avvenire sia utilizzando uno username, sia utilizzando un indirizzo e-mail.
La corrispondenza tra e-mail e utente avviene a mezzo del file /etc/aliases.
Il meccanismo di login può operare sia a livello del database degli utenti del sistema operativo (i files variano in base al sistema operativo), che sulla base di utenti solo web.
La procedura di login riconosce ed è in grado di gestire alcune condizioni ostative che impediscono ad un utente di effettuare il login pur conoscendo la password di accesso:
- account locked: un utente può essere bloccato dall'amministratore di sistema, in tal caso il login viene negato.
- account expired: un'utenza UNIX può scadere, in tal caso non gli è consentito accedere oltre una certa data.
- account inactive: un'utenza può diventare inattiva se l'utente non cambia la password oltre un certo numero di giorni dopo la sua scadenza.
- password expired: la password è scaduta e deve essere cambiata.
- password changed by administrator: la password è stata impostata dall'amministratore, l'utente deve cambiarla prima di poter effettuare l'accesso.
Nella pagina di login sono normalmente presenti altri due tasti:
- change password: permette all'utente di impostare una nuova password;
- reset password: permette ad un utente che non ricorda la propria password di ottenerne una nuova. L'utente riceverà una e-mail contenente un link, che potrà essere usato una sola volta e valido 24h al massimo, per generare una nuova password casuale.
Inoltre il processo di autenticazione può essere configurato dal webmaster tramite il file webauth.conf.
Tale file viene cercato nella directory che contiene la directory che contiene il programma, oppure in /etc.
Il file di configurazione ../webauth.conf o /etc/webauth.conf può contenere le seguenti istruzioni:
- logfile nomefile: ogni login viene registrato sul file /var/log/webauth.log, questa istruzione permette di specificare un diverso file di log;
- webonly nomefile: il riconoscimento delle credenziali di accesso viene fatto normalmente utilizzando il database degli utenti definiti a livello di sistema operativo, tramite questa istruzione è possibile definire degli utenti virtuali, che possono fare login, ma non esistono realmente.
Il file di default per gli utenti virtuali è /etc/security/webonly, ma con questa istruzione è possibile specificare un file diverso.
Si tratta di un file di testo nello stesso formato utilizzato dalla basic authentication di apache, manutenibile con il comando htpasswd presente nella distribuzione di apache.
Il formato prevede, molto semplicemente, due campi per ogni riga, separati dal carattere ':', il primo campo contiene lo username, il secondo campo contiene la password di accesso criptata con la funzione crypt().
- allow users ...: consente di specificare una lista di utenti che possono autenticarsi, tutti gli altri saranno esclusi;
- allow groups ...: consente di specificare una lista di gruppi di utenti che possono autenticarsi, tutti gli altri saranno esclusi;
- deny users ...: nega l'accesso agli utenti specificati;
- deny groups ...: nega l'accesso ai gruppi di utenti specificati;
- change_password_url URL: permette di associare una pagina web al tasto change password; il valore '-' (meno) disabilita questa funzione; il vaore di default consiste nella modifica alla password del sistema operativo a mezzo del comando ckuserpw $username $old_password $new_password;
- reset_password_url URL: permette di associare una pagina web al tasto reset password; il valore '-' (meno) disabilita questa funzione; in mancanza di questa direttiva viene richiamato il comando self_pwdreset $username, se esiste.
Le regole di allow o deny possono essere precedute da if varname=value.
In tal caso la regola viene presa in considerazione se e solo se la variabile varname ha il valore value.
Le variabili possono essere variabili d'ambiente oppure variabili CGI, cioè contenute nel URL con il quale il programma è stato chiamato.