Développeur FullStack & Devops

La Basic Auth (Basic Authentication en ?? ou 4 Express

L’utiliser ou pas ?

Ce mécanisme permet de mettre en place un blocage simple, mais elle est si basique qu’elle peut être sniffée si certaines requêtes ne passent en https car les login et password sont juste encodés en base64 ou simplement brute forcée (si d’autres mécanismes de limitations ne sont pas en place).

  • La basic auth est donc déconseillée ? pour sécuriser l’accès à une application web.
  • En revanche elle est adaptée ? dans le cas où on souhaite simplement cacher une URL des crawlers (Googlebot etc) pour par exemple éviter l’indexation des sites de recette, pré-prod etc.

Protocole et en-têtes HTTP

La sécurisation par l’authentification basique peut se faire à 2 niveaux de l’infrastructure :

  • Reverse Proxy : par configuration .Net

Séquencement

  1. le navigateur commence par effectuer un http GET l’URL protégée par une Basic Auth
  2. en fonction de l’infra qui authentifie (reverse proxy ou serveur web), on reçoit coté client un couple en-tête HTTP / dépréciée)
  3. le navigateur encode en base64 la chaîne: « login:pass » et la transmet via un GET (de la même ressource) avec l’en-tête HTTP Authorization
    ex: Authorization: Basic bG9naW46cGFzcw==
  4. le Proxy ou Serveur Web qui gère l’authentification réponds après vérification, soit par une 200 (et tout roule), soit par une 403 (Forbidden)…
  5. le navigateur garde en cache ces credentials et les envois lors de toutes les requêtes HTTP vers ce realm (ici la chaine Acces restreint)
  6. lorsque l’onglet est fermé, le navigateur supprime ces credentials de son cache

Encoder et décoder en base64

Nodejs:

Buffer.from(b64, ‘base64’).toString()

https://nodejs.org/api/buffer.html#buffer_buffer

Navigateur:

atob(b64)

https://developer.mozilla.org/fr/docs/Web/API/WindowOrWorkerGlobalScope#Methods

Express

basic-auth est un middleware Express (Nodejs) qui implémentent la Basic Auth.

rédigé par behrouze le 11/08/2019
Cheat SheetsOutilsVidéosA propos