HTTP 401 non autorisé ou 403 Interdit pour un utilisateur "handicapé"?

un service d'authentification permet de désactiver les comptes utilisateurs (une sorte de soft-delete).

Si le serveur reçoit une demande d'authentification d'un utilisateur désactivé qui serait autrement être valide, le serveur retourne 401 ou 403? Avec l'un ou l'autre code de statut, je retournerais un message indiquant que le compte a été désactivé.

Pour une référence rapide, pertinente des citations de HTTP / 1.1 spec (l'emphase est mienne):

401 Non autorisée

la requête nécessite l'authentification de l'utilisateur. La réponse doit inclure une WWW-champ d'en-tête D'authentification (section 14.47) contenant une contestation applicable à la ressource demandée. le client peut répéter demande avec un champ d'en-tête D'autorisation approprié (section 14.8). si la demande incluait déjà des justificatifs d'autorisation, puis le 401 la réponse indique que l'autorisation a été refusé pour ceux références. Si la réponse 401 contient le même défi que les avant l'intervention, et l'agent utilisateur a déjà tenté authentification au moins une fois, puis l'utilisateur doit être présenté entité qui a été donné dans la réponse puisque cette entité pourrait inclure l'information diagnostique pertinente. Authentification de L'accès HTTP est expliqué dans " authentification HTTP: accès de base et Digest Authentication" [43].

403 Forbidden

Le serveur a compris la requête, mais refuse de la satisfaire. l'Autorisation ne va pas aider et la requête ne doit pas être répétée. Si la méthode de requête N'était pas HEAD et que le serveur souhaite faire public pourquoi la demande n'a pas été remplies, il devrait décrire la raison pour le refus de l'entité. Si le serveur ne souhaite pas de mettre cette information à la disposition du client, le code de statut 404 (Pas Trouvé) peut être utilisé à la place.

25
demandé sur Dolph 2012-02-10 03:14:38
la source

3 ответов

basé sur un e-mail rédigé par Roy T. Fielding

j'ai deux réponses différentes pour quoi retourner dans ce cas.

choix sémantique - 401 non autorisé. Dans ce cas, votre client a fourni des justificatifs d'identité, et la demande a été refusée en fonction des justificatifs d'identité spécifiques. Si le client devait essayer de nouveau avec un ensemble différent de justificatifs d'identité, ou si le compte devait être réactivé à l'avenir, la même demande pourrait réussir.

Sécurité choix - 404-Non Trouvé. De nombreux services retourneront simplement un 404 pour toute défaillance, afin d'éviter les fuites d'informations. Github vient immédiatement à l'esprit.

Général de l'API de l'Information, dans le github du développeur docs:

les requêtes non authentifiées retourneront 404 pour empêcher toute sorte de fuite d'informations privées.

pour quelque chose que je déployais en tant que service public, j'utiliserais probablement le code 404 pour éviter de donner à un attaquant des indices au sujet de ses tentatives d'obtention de justificatifs d'identité. Si c'était pour consommation interne seulement, ou dans les tests, je rendrais probablement 401.

9
répondu aalpern 2012-02-10 03:21:15
la source

techniquement, les deux sont corrects, il s'agit vraiment de combien vous voulez afficher.

retour 401 dit à l'appelant que le compte n'est pas valide, ce qui est correct, mais si votre api va ensuite être appelé à nouveau pour enregistrer un utilisateur avec les mêmes informations d'identification que appel serait également échouer. qui pourrait ne pas être une grande aide pour l'appelant.

donc, cela dépend vraiment de la façon dont votre api sera utilisée et qui/Quel est le public cible.

2
répondu Antony Scott 2012-02-10 03:21:11
la source

Autres questions sur