Sobes.tech
Junior

Wat is basis authenticatie (Basic Auth)?

sobes.tech AI

Antwoord van AI

Basis authenticatie is de eenvoudigste manier om een HTTP-client te authenticeren, zoals gedefinieerd in de RFC 7617-standaard.

Werking principe:

  1. De client stuurt een HTTP-verzoek naar een beveiligde bron.
  2. De server reageert met een status 401 Unauthorized en een header WWW-Authenticate: Basic realm="<realm>", waarbij <realm> een tekstuele beschrijving is van het beschermde gebied (bron).
  3. De browser of de clientapplicatie toont een dialoogvenster om gebruikersnaam en wachtwoord in te voeren.
  4. De client codeert de gebruikersnaam en het wachtwoord in een string in het formaat username:password.
  5. De resulterende string wordt gecodeerd met Base64.
  6. De client herhaalt het verzoek, met toevoeging van de header Authorization: Basic <base64_gecodeerde_string>, waarbij <base64_gecodeerde_string> het resultaat is van de Base64-codering.
  7. De server decodeert de Base64-string, scheidt de gebruikersnaam en het wachtwoord en controleert de inloggegevens.
  8. Als de inloggegevens correct zijn, stuurt de server de gevraagde bron. Anders, geeft hij opnieuw 401 Unauthorized terug.

Voorbeeld van de Authorization-header:

Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

waar YWxhZGRpbjpvcGVuc2VzYW1l een Base64-encoded string is van aladdin:opensesame.

Kenmerken:

  • Eenvoud: Gemakkelijk te implementeren zowel aan de client- als aan de serverzijde.
  • Onveiligheid: De inloggegevens worden verzonden, ook al zijn ze in Base64, maar niet versleuteld. Base64 is codering, geen encryptie. Bij onderschepping van het verkeer kunnen de gegevens gemakkelijk worden gedecodeerd. Alleen in combinatie met HTTPS biedt het een minimaal beveiligingsniveau.
  • Stateloos: Slaat geen toestand op de server tussen verzoeken (stateless). Elk verzoek vereist de Authorization-header.
  • Gebruikerservaring: Het dialoogvenster van de browser is minder flexibel en gebruiksvriendelijk in vergelijking met aangepaste authenticatieformulieren.

Gebruik: Wordt vooral gebruikt om API's, statische bronnen of in eenvoudige interne systemen te beveiligen, waar beveiliging niet kritisch is, of altijd in combinatie met SSL/TLS (HTTPS).