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.