Nederlands
  • 401
  • 403
  • http statuscode
  • autorisatie
  • authenticatie

HTTP-statuscode 401 of 403? Hoe fouten bij authenticatie en autorisatie verschillen

401 Unauthorized geeft aan dat de client niet geauthenticeerd is en geldige inloggegevens vereist. 403 Forbidden betekent dat de client geauthenticeerd is, maar niet over de benodigde permissies beschikt om toegang te krijgen tot de bron.

Guamian
Guamian
Product & Design

Elke keer dat je een webpagina laadt, een betaling doet of inlogt in een app, vindt er een onzichtbaar gesprek plaats tussen jouw apparaat en een server. Het is een beetje zoals een bericht sturen en wachten op een antwoord—soms krijg je een duim omhoog, soms een beleefd ‘probeer het opnieuw,’ en soms een uitgesproken ‘nee.’ Deze reacties, beter bekend als HTTP-statuscodes, zijn de onbezongen helden van het internet. Ze sturen stilletjes de stroom van communicatie en zorgen ervoor dat alles soepel verloopt—of laten je tenminste weten wanneer dat niet het geval is.

Wat zijn HTTP-statuscodes

HTTP-statuscodes zijn als signalen in een gesprek tussen een client (zoals je browser of app) en een server. Ze geven snelle en duidelijke updates over wat er gebeurde toen je een verzoek deed—of alles soepel verliep, iets misging, of aanvullende actie vereist is. Laten we het zien als een bezoek aan een goed gerunde bakkerij:

200: Alles is perfect

Je vraagt om een croissant en de bakker lacht, geeft het aan je en zegt: “Alsjeblieft!” Dat is een HTTP 200 OK—het verzoek was succesvol en alles werkte zoals verwacht.

De 200 OK HTTP-statuscode is een van de meest gebruikte codes, die aangeeft dat het verzoek van de client succesvol is ontvangen, begrepen en verwerkt door de server.

301: We zijn verhuisd

Je komt aan bij je favoriete bakkerij, maar er hangt een bord dat zegt: “We zijn verhuisd naar 123 Nieuwe Straat.” Dit is een 301 Moved Permanently. De server vertelt je browser om automatisch naar het nieuwe adres te gaan.

De 301 Moved Permanently HTTP-statuscode geeft aan dat de opgevraagde bron permanent naar een nieuwe URL is verplaatst. Deze statuscode informeert de client (bijvoorbeeld een browser of API-client) om zijn gegevens bij te werken en de nieuwe URL te gebruiken voor toekomstige verzoeken.

404: Sorry, het is hier niet

Je vraagt om een chocolade scone en de bakker zegt: “Die maken we hier niet.” Dat is een 404 Not Found—de bron die je zoekt bestaat niet op de server.

De 404 Not Found HTTP-statuscode geeft aan dat de server de opgevraagde bron niet kon vinden. Deze reactie betekent dat het verzoek van de client geldig was, maar dat de server de bron niet kon vinden.

401: Wie ben jij?

Je probeert de VIP-lounge binnen te komen, maar de portier houdt je tegen en zegt: “Je moet je lidmaatschapskaart laten zien.” Dat is een 401 Unauthorized—authenticatie is vereist voordat je toegang krijgt tot de bron.

De 401 Unauthorized HTTP-statuscode geeft aan dat het verzoek van de client niet is uitgevoerd omdat het geen geldige authenticatiegegevens heeft. De server vereist dat de client zichzelf authenticeert om toegang te krijgen tot de opgevraagde bron.

403: Niet voor jou

Je laat je lidmaatschapskaart zien, maar de portier zegt: “Alleen platinumleden kunnen naar binnen.” Dat is een 403 Forbidden—je bent geauthenticeerd, maar hebt niet de benodigde permissies om toegang tot de bron te krijgen.

De 403 Forbidden HTTP-statuscode geeft aan dat de server het verzoek van de client begrijpt, maar weigert het uit te voeren omdat de client niet over de noodzakelijke permissies beschikt. Dit verschilt van een 401 Unauthorized-status, omdat de client geauthenticeerd is (of het verzoek geen authenticatie vereist), maar toegang tot de bron expliciet wordt geweigerd.

500: De oven staat in brand

Je plaatst een bestelling, maar er komt plotseling rook uit de keuken. De bakker zegt: “We kunnen je bestelling niet uitvoeren; er is iets intern misgegaan.” Dat is een 500 Internal Server Error—de server heeft een onverwacht probleem ondervonden.

De 500 Internal Server Error HTTP-statuscode geeft aan dat de server een onverwachte toestand heeft aangetroffen waardoor het verzoek niet kon worden uitgevoerd. Het is een generieke foutreactie en biedt geen specifieke details over wat er mis is gegaan.

503: Tijdelijk niet beschikbaar

Je bezoekt de bakkerij, maar er hangt een bord met “Gesloten voor onderhoud.” De bakkerij zal later heropenen. Dat is een 503 Service Unavailable—de server kan je verzoek tijdelijk niet verwerken, vaak door overbelasting of onderhoud.

De 503 Service Unavailable HTTP-statuscode geeft aan dat de server tijdelijk niet in staat is om verzoeken te verwerken. Dit kan te wijten zijn aan serveroverbelasting, onderhoud of andere tijdelijke omstandigheden. In tegenstelling tot een 500 Internal Server Error impliceert een 503 dat het probleem naar verwachting spoedig is opgelost.

HTTP-statuscodes zijn cruciaal voor het handhaven van efficiënte communicatie tussen clients en servers. Ze informeren clients snel of hun verzoeken zijn geslaagd, mislukt of verdere actie vereisen. Voor ontwikkelaars en IT-professionals helpt het begrijpen van deze codes om problemen op te lossen, betere foutafhandeling te ontwerpen en de algehele gebruikerservaring te verbeteren.

Beschouw ze als professionele, gestandaardiseerde signalen in het voortdurende gesprek van het internet.

In dit artikel wil ik me richten op de 401- en 403-fouten, omdat ze nauw verwant zijn aan authenticatie (AuthN) en autorisatie (AuthZ).

Wanneer gebruik je 401 Unauthorized?

401.png

De 401 Unauthorized HTTP-statuscode wordt gebruikt wanneer authenticatie voor het verzoek van de client vereist is, maar ontbreekt, ongeldig is of is mislukt. Het vertelt de client dat ze zichzelf moeten authentiseren om toegang te krijgen tot de aangevraagde bron. De relatie tussen authenticatie en de 401 Unauthorized-statuscode ligt in de rol van authenticatie bij het bepalen of een verzoek kan doorgaan.

401 unauthorized moet een WWW-Authenticate-header bevatten die details biedt over hoe te authenticeren.

Dus, wat zijn veelvoorkomende scenario's voor het gebruik van 401 Unauthorized?

  1. Authenticatie ontbreekt

    Het verzoek bevat niet de vereiste authenticatiegegevens. Bijvoorbeeld: Een verzoek aan een beveiligd API-eindpunt wordt gedaan zonder een Authorization-header.

  2. Ongeldige authenticatiegegevens

    De client verstrekt inloggegevens, maar deze zijn onjuist of komen niet overeen met wat de server verwacht. Bijvoorbeeld, een gebruiker stuurt een ongeldig API-sleutel of een verkeerd gevormd token.

  3. Verlopen authenticatietoken

    Het authenticatietoken is geldig maar is verlopen, wat opnieuw authenticeren door de client vereist. Bijvoorbeeld, een JWT-token met een verlopen datum (exp-claim).

  4. Ontbrekende of verkeerd gevormde autorisatieheader

    De autorisatieheader is vereist maar is niet geleverd of verkeerd geformatteerd.

  5. Authenticatieschema niet ondersteund

    De server ondersteunt de door de client verstrekte authenticatiemethode niet. Bijvoorbeeld: De client stuurt een Basis-authenticatieheader, maar de server ondersteunt alleen Bearer-tokens.

  6. Ongeldige sessie of intrekking van token

    De sessie van de gebruiker is ongeldig geworden, of hun token is ingetrokken. Bijvoorbeeld: Een gebruiker logt uit, maar gebruikt hetzelfde token om toegang te krijgen tot een beveiligde bron.

Voorbeeld antwoord

Wanneer gebruik je 403 Forbidden?

403.png

De 403 Forbidden HTTP-statuscode betekent dat de server het verzoek en de identiteit van de client (indien geauthenticeerd) begrijpt, maar toegang weigert vanwege onvoldoende permissies. Het signaleert duidelijk, “Je mag dit niet doen,” en versterkt duidelijke toegangslimieten en veiligheidsbeleid.

Het onderscheid tussen 401 Unauthorized en 403 Forbidden ligt in hun rollen binnen authenticatie- en autorisatiecontexten.

Autorisatie is een apart mechanisme van authenticatie. Terwijl authenticatie je identiteit bepaalt, bepaalt autorisatie of je toegang kunt krijgen tot specifieke bronnen en welke acties je daarop kunt uitvoeren.

Bekijk de gedetailleerde verschillen over authN en authZ. Bekijk de volgende artikelen.

Wat is AuthZ

Wat is AuthN

Dus wat zijn de veelvoorkomende scenario's voor het gebruik van 403 Forbidden?

  1. Geauthenticeerd, maar mist permissie

    De client is ingelogd of geauthenticeerd, maar heeft niet de vereiste permissies of rol. Bijvoorbeeld, een gebruiker met een “viewer”-rol probeert een bestand te verwijderen, wat “editor”-privileges vereist.

  2. Toegang tot bron beperkt

    De toegang tot de bron is opzettelijk beperkt tot specifieke gebruikers of groepen. Bijvoorbeeld: Een privé-document gedeeld met specifieke gebruikers wordt benaderd door iemand die niet op de toegangscontrolelijst staat.

  3. IP- of geografische blokkering

    Het IP-adres of de geografische locatie van de client is geblokkeerd door de server. Bijvoorbeeld: een gebruiker uit een beperkte regio probeert toegang te krijgen tot een dienst die alleen in specifieke landen opereert.

  4. Geblokkeerde acties door beleid

    De client probeert een actie uit te voeren die verboden is door server-side beleidsregels of regels. Bijvoorbeeld: een gebruiker probeert een bron te wijzigen die als “alleen-lezen” is gemarkeerd.

  5. Geblokkeerde statische bronnen

    De server weigert toegang tot specifieke statische bestanden of directories om veiligheidsredenen.

    Voorbeeld: Een gebruiker probeert toegang te krijgen tot een .htaccess-bestand of een serverconfiguratiebestand.

  6. Account opgeschort of uitgeschakeld

    Het account van de client is uitgeschakeld of geblokkeerd vanwege overtredingen of inactiviteit. Bijvoorbeeld: Een gebruiker met een opgeschort account probeert in te loggen of bronnen te benaderen.

  7. Actie vereist verhoogde permissies

    De gevraagde actie vereist speciale privileges (bijv. admin of superuser). Bijvoorbeeld: Een standaardgebruiker probeert toegang te krijgen tot admin-only eindpunten.

Voorbeeld Antwoord:

Hoe kan ik een 401 unauthorized-error oplossen

Een 401-error geeft meestal aan dat authenticatie nodig is en is mislukt.

Controleer inloggegevens

Zorg ervoor dat de Authorization-header aanwezig en correct geformateerd is en verifieer dat de inloggegevens (API-sleutel, token of wachtwoord) correct zijn en niet zijn verlopen. Onjuiste invoer van gebruikersnaam of wachtwoord is een van de meest voorkomende oorzaken van een 401-error.

Bevestig authenticatiemethode

De server verwacht mogelijk een andere authenticatiemethode dan wat wordt gebruikt. Dit kan gebeuren als de client en server niet synchroon zijn wat betreft het authenticatieprotocol. Gebruik de juiste methode (bijv. Basic, Bearer, API Key) zoals gespecificeerd door de server en controleer de juiste syntax in de headers.

Inspecteer de serverreactie

Bekijk het antwoordlichaam voor foutdetails en bekijk de WWW-Authenticate-header voor authenticatie-instructies.

Verifieer het verzoek

Bevestig dat het eindpunt, de queryparameters en de host correct zijn en zorg ervoor dat de bron die je zoekt, authenticatie vereist.

Controleer tokenproblemen

Decodeer en inspecteer het token (bijv. met https://logto.io/jwt-decoder) op geldigheid, verlopen en claims en stem het publiek (aud) van het token af op de vereisten van de API.

Hoe kan ik een 403 forbidden-error oplossen

Een 403 forbidden-error betekent doorgaans dat het autorisatieproces is voltooid, maar de toegang werd geweigerd. Om deze fout op te lossen, kunt u de volgende omstandigheden overwegen:

Verifieer permissies

Bevestig dat je account, API-sleutel, of token de vereiste permissies heeft voor de bron. Controleer of de bron is beperkt tot specifieke rollen of groepen.

Zorg ervoor dat authenticatie correct is

Zorg ervoor dat je correct bent geauthentiseerd (bijv. met een geldig token of geldige inloggegevens).

Controleer nogmaals de vereiste authenticatiemethode van de server.

Valideer de bron

Bevestig dat de gevraagde bron bestaat en dat je er toegang toe hebt. Als je API's gebruikt, controleer dan de eindpuntvereisten in de documentatie.

Kijk naar IP- of locatieblokkering

Controleer of je IP-adres of geografische locatie is beperkt door de server.

Bekijk serverbeleid

Zorg ervoor dat de aangevraagde actie geen inbreuk maakt op serverregels of beleid (bijv. toegang tot een alleen-lezen bron).

Inspecteer de serverreactie

Onderzoek het antwoordlichaam voor details die de reden voor de 403-fout uitleggen.

Kan een enkel verzoek zowel 401 als 403 statuscodes teruggeven

Nee, een enkel HTTP-verzoek kan niet gelijktijdig zowel 401 Unauthorized als 403 Forbidden-statuscodes teruggeven, omdat een HTTP-reactie slechts één statuscode kan bevatten.

Het praktische gebruik van 401- en 403-foutcodes in authenticatie en autorisatie

In moderne applicatieontwikkeling komen ontwikkelaars vaak de 401 Unauthorized en 403 Forbidden HTTP-statuscodes tegen. Hoewel ze mogelijk vergelijkbaar lijken, zijn hun betekenissen en gebruikssituaties duidelijk verschillend. Om hun verschillen te verduidelijken verkent dit artikel praktische voorbeelden van deze codes in scenario’s zoals authenticatie, autorisatie, multi-tenancy, en multi-factor authenticatie (MFA).

  1. Inlogscenario: Een gebruiker probeert toegang te krijgen tot een beveiligde pagina zonder in te loggen of geldige inloggegevens te verstrekken. De server reageert en gooit een 401 Unauthorized-fout: “Je moet inloggen of geldige inloggegevens verstrekken om toegang te krijgen tot deze pagina.”
  2. Toegangsscenario: Dezelfde gebruiker logt succesvol in maar probeert toegang te krijgen tot een pagina die alleen voor beheerders toegankelijk is zonder de vereiste beheerderrol. De server reageert en gooit een 403 Forbidden: “Je bent ingelogd, maar je hebt geen toestemming om toegang te krijgen tot deze pagina.”
  3. Multi-tenant scenario: Dezelfde gebruiker logt in, maar behoort tot Tenant A en probeert toegang te krijgen tot een bron in Tenant B, waar ze geen toegang hebben. De server reageert en gooit een 403 Forbidden: “Je bent geauthentiseerd, maar je hebt geen toestemming om toegang te krijgen tot deze bron in Tenant B.”
  4. MFA-scenario: Een gebruiker probeert in te loggen maar heeft de vereiste Multi-Factor Authenticatie (MFA) nog niet voltooid. De server reageert en gooit een 401 Unauthorized-fout: “Authenticatie is onvolledig. Voltooi MFA om verder te gaan.”

Logto gebruiken als een authenticatie- en autorisatieprovider

Logto is primair een authenticatieprovider, die sleutelmethoden biedt zoals wachtwoordloze inlog, e-mail en wachtwoord, MFA, Enterprise SSO en sociale inlog, allemaal gebaseerd op open-standaardprotocollen zoals OIDC, OAuth 2.0, en SAML.

Logto Cloud biedt ook essentiële autorisatiefuncties, inclusief Role-Based Access Control (RBAC), Organizations (Multi-Tenancy), en Custom Token Claims om aan verschillende autorisatiebehoeften te voldoen.