C'est une question conceptuelle.
J'ai une application client (mobile) qui doit prendre en charge une action de connexion sur un service Web RESTful. Étant donné que le service Web est RESTful, cela revient au client d'accepter un nom d'utilisateur / mot de passe de l'utilisateur, de vérifier ce nom d'utilisateur / mot de passe avec le service, puis de se souvenir d'envoyer ce nom d'utilisateur / mot de passe avec toutes les demandes suivantes.
Toutes les autres réponses de ce service Web sont fournies au format JSON.
La question est la suivante: lorsque j'interroge le service Web simplement pour savoir si un nom d'utilisateur / mot de passe donné est valide, le service Web doit-il toujours répondre avec des données JSON m'indiquant son succès ou son échec, ou doit-il renvoyer HTTP 200 avec de bonnes informations d'identification et HTTP 401 sur de mauvaises informations d'identification.
La raison pour laquelle je demande est que certains autres services RESTful utilisent 401 pour de mauvaises informations d'identification, même lorsque vous demandez simplement si les informations d'identification sont valides. Cependant, si je comprends bien les réponses 401, elles représentent une ressource à laquelle vous n'êtes pas censé avoir accès sans informations d'identification valides. Mais la ressource de connexion DEVRAIT être accessible à tout le monde car le but entier de la ressource de connexion est de vous dire si vos informations d'identification sont valides.
En d'autres termes, il me semble qu'une demande comme:
myservice.com/this/is/a/user/action
devrait retourner 401 si de mauvaises informations d'identification sont fournies. Mais une demande comme:
myservice.com/are/these/credentials/valid
ne doit jamais retourner 401 car cette URL (requête) particulière est autorisée avec ou sans informations d'identification valides.
J'aimerais entendre des opinions justifiées d'une manière ou d'une autre à ce sujet. Quelle est la manière standard de gérer cela et la manière standard de gérer cela est-elle logiquement appropriée?