L'authentification basique place une demande de mot de passe du navigateur devant un chemin, avant même que votre application soit atteinte. Elle est idéale pour les sites de préproduction, un outil interne, ou un second verrou sur une zone d'administration.

Créer le fichier de mots de passe

sudo apt-get install -y apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd sara      # -c creates; omit it to ADD
sudo chmod 640 /etc/nginx/.htpasswd
sudo chown root:www-data /etc/nginx/.htpasswd
-c écrase le fichier. Utilisez-le une fois, et plus jamais sur le même fichier, sinon vous venez d'effacer tous les autres comptes qu'il contenait.

Nginx

location /staging/ {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

Apache et LiteSpeed

AuthType Basic
AuthName "Restricted"
AuthUserFile /etc/nginx/.htpasswd
Require valid-user

Ce qu'elle protège

  • Un site de préproduction, des moteurs de recherche et des visiteurs de passage.
  • Un chemin d'administration, des tentatives de connexion automatiques, avant qu'elles n'atteignent votre application.
  • Tout ce que vous voulez fermer discrètement sans écrire de code.

Ce qu'elle ne protège pas

  • Elle n'est privée qu'autant que votre TLS. En http, le mot de passe part quasiment en clair à chaque requête.
  • Il n'y a ni blocage ni trace de qui s'est connecté : c'est un mot de passe partagé, pas un compte.
  • Elle casse les API et les webhooks qui ne savent pas envoyer d'identifiants. Exemptez ces chemins explicitement.
location /staging/api/webhook {
    auth_basic off;
}
Pour un site de préproduction, ajoutez aussi add_header X-Robots-Tag "noindex, nofollow";. L'authentification basique tient déjà les robots à l'écart ; l'en-tête le tient hors de l'index si la protection est un jour retirée par mégarde.