Web-1/Authenticatie en autorisatie

Uit Inf2019
Naar navigatie springen Naar zoeken springen
Web1
Netwerken

Zie ook Regels en richtlijnen
Zie ook Artikelen bewerken

Authenticatie

  • hoe weet de server wie de gebruiker achter de browser is
    • of, in het geval van een andere server: welke server dat is?
  • hoe weet je als gebruiker met welke server je te maken hebt?
    • of, als je een bepaalde dienst gebruikt, of het inderdaad de dienst is die je bedoelt?

Voor de gebruiker wordt dit probleem opgelost met behulp van https en certificaten:

  • certificaten vormen een end-to-end controle
  • (je moet dan wel een mechanisme hebben om certificaten op een gecontroleerde manier uit te geven; dit is een aparte hiërarchie, naast de DNS.)
  • er zijn verschillende soorten certificaten (met verschillende niveaus van controle cq. vertrouwen)
  • omdat het voor veel websites belangrijk is dat er geen "man in the middle" kan plaatsnemen, gebruiken steeds meer websites https. (Dit helpt bovendien tegen het afluisteren van veel prive-gegevens.)
  • de basis van het certificaat-systeem zit in de browser ingebakken.
    • hoe werkt dit in het geval van een webserver die een andere dienst gebruikt?

NB: voor het valideren van clients, werken veel APIs met speciaal gegenereerde keys. Een dergelijke key, gebruikt in een API-call, is gebonden aan een bepaalde gebruiker (of een bepaalde toepassing).

  • als de key in een URL gebruikt wordt, kan zo'n key gemakkelijk afgeluisterd worden: iemand anders kan zich dan voordoen als de betreffende gebruiker.
  • een protocol waarbij niet de key overgezonden wordt, maar waarbij de key gecontroleerd wordt met een bepaald algoritme, lijkt mij veel beter.
  • een eerste beveiliging is om het protocol via https te laten verlopen, en de key op een andere manier mee te geven (in een header?) Bij mijn weten worden de headers wel gecodeerd/beveiligd.

Autorisatie

  • als je weet wie de gebruiker is - hoe bepaal je dan zijn rechten?
  • in veel gevallen zijn deze twee direct gekoppeld:
  • maar, in veel webtoepassingen kun je de rechten van de gebruikers bepalen. Denk bijvoorbeeld aan Mediawiki, of aan forum-software zoals Discourse.
    • ook voor een webwinkel heb je te maken met verschillende soorten gebruikers. Iemand moet in staat zijn om de bevoegdheden van gebruikers aan te passen.
  • met andere woorden: de autorisatie ligt bij de toepassing (in de server).
    • authenticatie kun je voor een deel uitbesteden, bijvoorbeeld met behulp van Google/OpenAuth enz.

Opmerkingen