Réparateur d'Échec de la Connexion: Retour 401 ou une Réponse Personnalisée
C'est un modèle conceptuel de question.
J'ai un client (mobile) de l'application qui en a besoin pour soutenir une action login à l'encontre d'un service web RESTful. Parce que le web service RESTful, ce qui revient au client l'acceptation d'un nom d'utilisateur/mot de passe de l'utilisateur, de vérifier que le nom d'utilisateur/mot de passe avec le service, et puis il suffit de se souvenir d'envoyer ce nom d'utilisateur/mot de passe avec toutes les demandes ultérieures.
Toutes les autres réponses dans ce service web sont fournis dans un format JSON.
La question est, quand j'ai une requête du service web simplement pour savoir si un nom d'utilisateur/mot de passe sont valides, si le service web de toujours répondre avec des données JSON en me disant de son succès ou de l'échec, ou faut-il de retour HTTP 200 sur les bonnes informations d'identification et HTTP 401 sur de mauvaises informations d'identification.
La raison pour laquelle je demande, c'est que certains autres services RESTful utilisation 401 pour les informations d'identification incorrectes, même lorsque vous êtes juste demander si les informations sont valides. Cependant, ma compréhension de la 401 réponses qu'ils représentent une ressource que vous n'êtes pas censé avoir accès sans informations d'identification valides. Mais la connexion de ressources DEVRAIENT être accessibles à n'importe qui parce que le but entier de la connexion de ressources est de vous dire si vos informations d'identification sont valides.
Mettre une autre manière, il me semble qu'une requête du type:
myservice.com/this/is/a/user/action
doit retourner 401 si les mauvaises informations d'identification sont fournis. Mais une requête du type:
myservice.com/are/these/credentials/valid
ne devrait jamais retourner 401 parce que celle-URL (demande) est autorisé, avec ou sans informations d'identification valides.
J'aimerais entendre des points de vue justifiés d'une manière ou l'autre sur ce point. Quelle est la façon standard de la manipulation, et est le moyen standard de gestion de cette logiquement approprié?
Vous devez vous connecter pour publier un commentaire.
Tout d'abord. 401 est le bon code de réponse à envoyer lors d'un échec de la connexion qui s'est passé.
Votre confusion sur l',
myservice.com/are/these/credentials/valid
de l'envoi de retour 401 lorsque vous venez de faire un chèque, je pense, est basée sur le fait que faire boolean demandes en RESTE est souvent mal par le repos contraintes. Chaque requête doit renvoyer une ressource. Faire boolean questions dans un service RESTful est glissant sloop en bas à RPC.Maintenant je ne sais pas comment les services que vous avez regardé sur est de se comporter. Mais une bonne façon de résoudre ce est pour avoir quelque chose comme un objet de Compte, que vous essayez d'OBTENIR. Si vous les informations d'identification sont correctes, vous obtiendrez l'objet de Compte, si vous ne voulez pas gaspiller de la bande passante juste pour un "check" vous pouvez faire une TÊTE sur la même ressource.
Un Compte de l'Objet est aussi un bel endroit pour stocker tous ces satanés valeurs booléennes qui, autrement, il serait difficile de créer des ressources pour le.
authentication is required and has failed or has not yet been provided
s'applique, puisque vous ne demandez pas pour la validité des pouvoirs, mais pour une ressource spécifique basée sur les informations d'identification que vous fournissez.401 doit être envoyé uniquement lorsque la demande a besoin d'une autorisation champ d'en-tête et l'autorisation échoue. Depuis le Login API ne nécessite pas d'autorisation, d'où 401 est le code d'erreur incorrect à mon avis
Conformément à la norme ici https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
*10.4.2 401 non autorisé
La demande nécessite une authentification de l'utilisateur. La réponse DOIT inclure un WWW-Authenticate champ d'en-tête (section 14.47) contenant un défi applicable à la ressource demandée. Le client PEUT répéter la demande, avec un en-tête d'Autorisation champ (section 14.8). Si la demande déjà inclus Autorisation des informations d'identification, puis la réponse 401 indique que l'autorisation a été refusée pour ces informations d'identification. Si la réponse 401 contient le même défi que l'état de la réponse, et l'agent utilisateur a déjà tenté l'authentification au moins une fois, alors l'utilisateur DOIT être présentée à l'entité qui a été donné dans la réponse, puisque cette entité pourrait inclure des informations de diagnostic. HTTP authentification d'accès est expliqué dans "Authentification HTTP: Basic et Digest Authentification d'Accès" [43].*