Erreur HTTP 401 : Unauthorized

Authentification requise : comprendre et résoudre.

L'erreur HTTP 401 "Unauthorized" est le code de réponse standard indiquant que l'authentification est requise pour accéder à une ressource. Malgré son nom, ce code concerne l'authentification (prouver son identité) et non l'autorisation (avoir les droits).

Le code 401 est accompagnĂ© d'un en-tĂȘte WWW-Authenticate qui spĂ©cifie le mĂ©canisme d'authentification acceptĂ© (Basic, Bearer, Digest, etc.). Le client peut alors rĂ©essayer avec les bonnes credentials. C'est le comportement qui dĂ©clenche la popup de login des navigateurs pour les sites protĂ©gĂ©s par Basic Auth.

Pour le monitoring d'APIs protégées, le 401 est un signal critique. Un 401 inattendu peut signifier une expiration de token, une révocation d'accÚs, ou un changement dans la configuration d'authentification. MoniTao permet de monitorer ces endpoints en configurant l'authentification appropriée.

Causes principales des erreurs 401

L'erreur 401 se produit lorsque l'authentification échoue. Voici les causes les plus courantes :

  • Credentials manquantes : La requĂȘte ne contient pas d'en-tĂȘte Authorization alors que la ressource l'exige. C'est le cas le plus simple.
  • Token expirĂ© : Les JWT et tokens OAuth ont une durĂ©e de vie limitĂ©e. PassĂ© ce dĂ©lai, ils sont rejetĂ©s avec un 401.
  • Token rĂ©voquĂ© : Un token peut ĂȘtre invalidĂ© cĂŽtĂ© serveur (dĂ©connexion, changement de mot de passe, rĂ©vocation manuelle) tout en restant valide cĂŽtĂ© client.
  • Identifiants incorrects : Login/mot de passe erronĂ©s, clĂ© API mal copiĂ©e, ou secret modifiĂ© sans mise Ă  jour cĂŽtĂ© client.

Différence entre 401 et 403

Ces deux codes sont souvent confondus mais ont des significations distinctes :

  • 401 Unauthorized : "Qui ĂȘtes-vous ?" - L'identitĂ© n'est pas Ă©tablie. Le client doit fournir des credentials valides.
  • 403 Forbidden : "Vous n'avez pas le droit" - L'identitĂ© est connue mais les permissions sont insuffisantes.
  • Action appropriĂ©e : 401 = demander une authentification. 403 = pas la peine de rĂ©essayer avec les mĂȘmes credentials.
  • SĂ©mantique correcte : Utilisez 401 pour les endpoints non authentifiĂ©s, 403 pour les accĂšs authentifiĂ©s mais non autorisĂ©s.

Résolution des erreurs 401

Selon la cause identifiée, voici les solutions à appliquer :

  • VĂ©rifier les credentials : Assurez-vous que le token ou les identifiants sont corrects. Attention aux espaces en dĂ©but/fin et Ă  la casse.
  • Renouveler le token : Si le token est expirĂ©, utilisez le refresh token ou rĂ©gĂ©nĂ©rez-en un nouveau via le mĂ©canisme prĂ©vu.
  • VĂ©rifier le format : L'en-tĂȘte Authorization doit avoir le bon format : "Bearer " ou "Basic ".
  • Consulter les logs : Les logs serveur peuvent indiquer la raison exacte du rejet : token malformĂ©, signature invalide, etc.

Exemples d'authentification HTTP

Voici comment configurer l'authentification pour diffĂ©rents types de requĂȘtes :

# cURL - Basic Auth
curl -u username:password https://api.example.com/resource

# cURL - Bearer Token
curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." https://api.example.com/resource

# JavaScript fetch - Bearer Token
fetch("https://api.example.com/resource", {
    headers: {
        "Authorization": "Bearer " + accessToken
    }
})

# PHP - Vérification cÎté serveur
$authHeader = $_SERVER["HTTP_AUTHORIZATION"] ?? "";
if (!preg_match("/Bearer\s+(\S+)/", $authHeader, $matches)) {
    http_response_code(401);
    header("WWW-Authenticate: Bearer");
    exit(json_encode(["error" => "Token requis"]));
}

L'en-tĂȘte WWW-Authenticate dans la rĂ©ponse 401 indique au client quel mĂ©canisme d'authentification utiliser.

Monitoring des endpoints authentifiés

Monitorer des APIs protégées nécessite une configuration spécifique :

  • Configurer l'authentification : Dans MoniTao, ajoutez vos credentials (Basic Auth ou Bearer Token) dans la configuration du monitor.
  • Surveiller l'expiration : Configurez des alertes pour ĂȘtre prĂ©venu avant l'expiration des tokens de monitoring.
  • Compte dĂ©diĂ© : CrĂ©ez un compte ou token spĂ©cifique pour le monitoring avec des droits minimaux (lecture seule).
  • Rotation planifiĂ©e : Planifiez la rotation des tokens de monitoring avant leur expiration pour Ă©viter les fausses alertes.

Checklist authentification

  • En-tĂȘte Authorization prĂ©sent et bien formatĂ©
  • Token/credentials valides et non expirĂ©s
  • Compte de monitoring avec droits minimaux créé
  • Token de monitoring avec longue durĂ©e de vie
  • ProcĂ©dure de rotation documentĂ©e et planifiĂ©e
  • Alerte configurĂ©e pour 401 inattendu

Questions fréquentes sur HTTP 401

Pourquoi 401 s'appelle "Unauthorized" alors qu'il s'agit d'authentification ?

C'est un abus de langage historique dans la spécification HTTP. Le terme correct serait "Unauthenticated". La RFC 7235 maintient ce nom pour la rétrocompatibilité.

Comment monitorer une API avec authentification JWT ?

Configurez un monitor MoniTao avec un en-tĂȘte Authorization: Bearer . Utilisez un token longue durĂ©e ou automatisez le renouvellement.

Mon monitor reçoit 401 alors que le token est valide. Pourquoi ?

VĂ©rifiez : 1) Le format exact de l'en-tĂȘte (Bearer avec majuscule, un seul espace). 2) Pas d'espaces invisibles autour du token. 3) Token non rĂ©voquĂ© cĂŽtĂ© serveur.

Comment éviter les fausses alertes 401 dues à l'expiration des tokens ?

Utilisez des tokens avec longue durée de vie pour le monitoring, ou mettez en place une rotation automatique avec alerte N jours avant expiration.

Que faire si mon API retourne 401 au lieu de 403 pour un accÚs non autorisé ?

C'est une erreur d'implĂ©mentation cĂŽtĂ© serveur. 401 devrait ĂȘtre utilisĂ© uniquement quand l'identitĂ© n'est pas Ă©tablie. Pour un utilisateur authentifiĂ© sans droits, c'est 403.

Comment gérer le renouvellement automatique des tokens ?

Implémentez un systÚme de refresh token. Quand le access token expire (401), utilisez le refresh token pour en obtenir un nouveau sans redemander les credentials.

Conclusion

L'erreur HTTP 401 Unauthorized signale un problÚme d'authentification : credentials manquantes, expirées ou invalides. Une bonne compréhension de la différence avec 403 (autorisation) permet d'implémenter des systÚmes de sécurité plus robustes.

MoniTao supporte le monitoring d'APIs protégées avec Basic Auth et Bearer Token. Configurez vos monitors avec des tokens dédiés longue durée et recevez des alertes en cas de 401 inattendu, signalant un problÚme d'authentification à résoudre immédiatement.

PrĂȘt Ă  dormir sur vos deux oreilles ?

Commencez gratuitement, sans carte bancaire.