403 Forbidden: vous n'avez pas le droit

Lorsqu’il s’agit de protéger une ressource web contre un accès non autorisé, le protocole HTTP a prévu un code d’erreur spécifique: 403 Forbidden. Ce code d’erreur HTTP indique qu’un serveur web comprend la requête mais refuse de l’autoriser parce que l’utilisateur ne possède pas les droits nécessaires pour l’opération demandée.

Autorisation vs Authentification

Le code d’erreur HTTP 403 Forbidden possède un compère: C’est le code d’erreur HTTP 401 Unauthorized. Ce dernier sert à signaler un problème d’authentification. Dans les deux cas, l’utilisateur n’a pas accès à la ressource, mais pour des raisons très différentes.

Lorsqu’un serveur reçoit une requête, plusieurs cas de figures sont possibles:

  • L’utilisateur n’est pas authentifié alors qu’une authentification est nécessaire: le serveur répond avec un code d’erreur 401 Unauthorized.

  • L’utilisateur est authentifié mais n’a pas les droits nécessaires pour l’action demandée: le serveur répond avec un code d’erreur 403 Forbidden

  • L’utilisateur est authentifié et possède tous les droits: requête acceptée et traitée.

Une erreur 401 Unauthorized disparaît dès que l’utilisateur s’authentifie. 

Dans le cas d’erreur 403 Forbidden, une ré-authentification ne changera rien à la situation. L’utilisateur doit contacter l’administrateur du système pour solliciter l’octroi des droits d’accès adéquats.

Comment gérer les droits d’accès

Plusieurs cas de figures sont possibles. Abordons rapidement deux cas extrêmes:

  • La gestion des droits se fait en suivant un protocole d’autorisation comme OAuth2. Dans ce cas, les droits sont gérés par un serveur d’autorisation. Ce serveur d’autorisation génère un jeton d’accès OAuth2 contenant ces droits. Ce jeton est inclus dans la requête web au moyen d’un header. L’application web interprète ce jeton pour savoir si les droits sont suffisants pour la requête.

  • La gestion des droits est interne à l’application elle-même. Dans ce cas, l’application possède un module d’administration incluant un volet gestion de droits. A chaque requête, elle récupère la configuration de l’utilisateur et vérifie si les droits sont suffisants.

Dans la mesure du possible, il faut privilégier l’utilisation d’un serveur d’autorisation pour la gestion des droits.

En conclusion, il faut retenir que le protocole HTTP a prévu le code d’erreur 403 Forbidden pour signaler les problèmes de droits d’accès à une ressource web. Une application web doit retourner cette erreur chaque fois qu’il reçoit une requête avec des droits insuffisants.