HTTP 401 Unauthorized

Authentification requise : le serveur ne sait pas qui vous êtes, ou vos identifiants ne fonctionnent plus.

Ce que signifie HTTP 401

HTTP 401 Unauthorized signifie que la requête a été rejetée parce qu'elle manque d'identifiants d'authentification valides. Malgré son nom, il s'agit d'authentification (qui vous êtes), pas d'autorisation (ce que vous pouvez faire) — ce second cas est 403 Forbidden.

Un 401 conforme à la spécification inclut un en-tête WWW-Authenticate décrivant comment s'authentifier, par exemple Bearer pour les API à token ou Basic pour l'authentification HTTP classique.

Causes courantes des erreurs 401

  • Aucun identifiant n'a été envoyé du tout (en-tête Authorization ou cookie de session manquant).
  • Un token expiré, révoqué ou malformé — la cause API la plus courante.
  • Mauvais schéma d'authentification (envoi d'une clé API là où un token Bearer est attendu).
  • Une session déconnectée : cookies expirés ou effacés pendant qu'un onglet restait ouvert.
  • Un décalage d'horloge faisant apparaître des JWT de courte durée comme expirés dès leur arrivée.

Comment la corriger en tant qu'utilisateur

  • Reconnectez-vous — la session a très probablement expiré.
  • Si ça boucle, effacez les cookies du site et reconnectez-vous depuis le début.
  • Vérifiez que l'URL n'est pas une zone d'administration ou de préproduction nécessitant un compte que vous n'avez pas.

Comment la corriger en tant que développeur

  • Rafraîchissez ou réémettez les tokens expirés ; implémentez le rafraîchissement automatique de token dans les clients d'API.
  • Envoyez l'en-tête Authorization exactement dans le format attendu (« Bearer <token> » — le mot et l'espace comptent).
  • Renvoyez 401 uniquement pour des identifiants manquants/invalides et 403 pour des utilisateurs valides sans les droits requis, afin que les clients réagissent correctement.
  • Vérifiez la synchronisation d'horloge du serveur (NTP) quand la validation « exp » du JWT échoue de façon inattendue.

Exemple de réponse

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="api", error="invalid_token", error_description="expired"

FAQ

Quelle est la différence entre 401 et 403 ?

401 signifie que le serveur n'a pas d'identifiants valides pour vous — connectez-vous ou rafraîchissez le token. 403 signifie qu'il sait qui vous êtes et refuse quand même.

Pourquoi j'obtiens 401 avec un token valide ?

Causes courantes : token expiré, mauvais format d'en-tête, token émis pour un environnement ou une audience différente, ou décalage d'horloge serveur.

Une connexion échouée doit-elle renvoyer 401 ?

Pour les API, oui, avec un corps explicatif. Les formulaires de connexion web renvoient généralement 200 avec un message d'erreur sur la page à la place.