L'autenticazione HTTP di base è un meccanismo di sicurezza per limitare l'accesso al tuo sito web/applicazione o ad alcune parti di esso impostando una semplice autenticazione con nome utente/password. Può essere utilizzato essenzialmente per proteggere l'intero server HTTP, singoli blocchi di server (host virtuali in Apache) o blocchi di posizione.
Leggi anche: Come configurare host virtuali basati su nome e IP (blocchi server) con NGINX
Come suggerisce il nome, non è un metodo sicuro su cui fare affidamento; dovresti usarlo insieme ad altre misure di sicurezza più affidabili. Ad esempio, se la tua applicazione Web è in esecuzione su HTTP, le credenziali dell'utente vengono trasmesse in testo normale, quindi dovresti considerare di abilitare HTTPS.
Lo scopo di questa guida è aiutarti ad aggiungere un piccolo ma utile livello di sicurezza per proteggere i contenuti privati/privilegiati sulle tue applicazioni web (come, ma non solo, i lati dell'amministratore). Puoi anche usarlo per impedire l'accesso a un sito Web o un'applicazione che è ancora in fase di sviluppo.
Dovresti iniziare creando un file che memorizzerà nome utente: password
coppie. Useremo il htpasswd utility da Apache HTTP Server, per creare questo file.
Prima controlla che apache2-utils o httpd-tools, i pacchetti che forniscono htpasswd utility sono installate sul tuo sistema, altrimenti esegui il comando appropriato per la tua distribuzione per installarlo:
# yum install httpd-tools [RHEL/CentOS] $ sudo apt install apache2-utils [Debian/Ubuntu]
Avanti, corri htpasswd comando seguente per creare il file della password con il primo utente. Il -C
l'opzione viene utilizzata per specificare il file passwd, una volta premuto [Accedere], ti verrà chiesto di inserire la password dell'utente.
# htpasswd -c /etc/nginx/conf.d/.htpasswd developer.
Aggiungi un secondo utente e non utilizzare il -C
opzione qui.
# htpasswd /etc/nginx/conf.d/.htpasswd admin.
Ora che hai il file della password pronto, procedi con la configurazione delle parti del tuo server web a cui vuoi limitare l'accesso. Per visualizzare il contenuto del file di password (che include nomi utente e password crittografate), utilizzare il comando del gatto sotto.
# cat /etc/nginx/conf.d/.htpasswd
Come accennato in precedenza, puoi limitare l'accesso al tuo server web, a un singolo sito web (usando il suo blocco server) o a una direttiva sulla posizione. Per raggiungere questo obiettivo possono essere utilizzate due utili direttive.
Per implementare l'autenticazione di base per l'intero server Web, che si applica a tutti i blocchi di server, aprire il pulsante /etc/nginx/nginx.conf file e aggiungi le righe sottostanti nel contesto http:
http{ auth_basic "Accesso limitato!"; auth_basic_user_file /etc/nginx/conf.d/.htpasswd; ……... }
Per abilitare l'autenticazione di base per un particolare dominio o sottodominio, apri il relativo file di configurazione in /etc/nginx/conf.d/ o /etc/nginx/conf/sites-available (a seconda di come hai installato Nginx), quindi aggiungi la configurazione di seguito nel blocco del server o nel contesto:
server { ascolta 80; nome_server esempio.com; auth_basic "Accesso limitato!"; auth_basic_user_file /etc/nginx/conf.d/.htpasswd; Posizione / { …….. } ……... }
È inoltre possibile abilitare l'autenticazione di base all'interno di una direttiva di posizione. Nell'esempio seguente, tutti gli utenti che tentano di accedere a /admin
verrà richiesto il blocco della posizione per l'autenticazione.
server { ascolta 80; nome_server esempio.com www.esempio.com; Posizione / { …….. } Posizione /admin/ { auth_basic "Accesso limitato!"; auth_basic_user_file /etc/nginx/conf.d/.htpasswd; } posizione /public/{ auth_basic disattivato; #disattiva l'autenticazione http di base per questo blocco } …….. }
Se hai configurato l'autenticazione HTTP di base, tutti gli utenti che tentano di accedere al tuo server web o a un sottodominio o specifici parte di un sito (a seconda di dove l'hai implementato), ti verrà chiesto un nome utente e una password come mostrato nello screenshot sotto.
In caso di autenticazione utente fallita, un "401 Autorizzazione richiesta” verrà visualizzato l'errore come mostrato di seguito.
Puoi trovare maggiori informazioni su limitare l'accesso con l'autenticazione HTTP di base.
Potresti anche leggere queste utili guide relative al server Nginx HTTP.
In questa guida, abbiamo mostrato come implementare l'autenticazione HTTP di base nel server web Nginx HTTP. Per porre qualsiasi domanda, utilizzare il modulo di feedback qui sotto.