Falha de login RESTful: devolução 401 ou resposta personalizada

Esta é uma questão conceitual.

Eu tenho um aplicativo cliente (móvel) que precisa suportar uma ação de login em um serviço web RESTful. Como o serviço da Web é RESTful, isso equivale ao cliente aceitar um nome de usuário / senha do usuário, verificar esse nome de usuário / senha com o serviço e, depois, apenas lembrar-se de enviar esse nome de usuário / senha com todas as solicitações subsequentes.

Todas as outras respostas neste serviço da web são fornecidas em um formato JSON.

A questão é, quando eu consultar o serviço da Web simplesmente para descobrir se um determinado nome de usuário / senha são válidos, o serviço da web deve sempre responder com dados JSON informando se foi bem-sucedido ou malsucedido ou deve retornar HTTP 200 em boas credenciais e HTTP 401 em credenciais ruins.

A razão pela qual eu pergunto é que alguns outros serviços RESTful usam 401 para credenciais ruins, mesmo quando você está apenas perguntando se as credenciais são válidas. No entanto, minha compreensão das respostas 401 é que elas representam um recurso ao qual você não deve ter acesso sem credenciais válidas. Mas o recurso de login deve ser acessível a qualquer pessoa, porque todo o propósito do recurso de login é informar se suas credenciais são válidas.

Em outras palavras, parece-me que um pedido como:

myservice.com/this/is/a/user/action 

deve retornar 401 se forem fornecidas credenciais ruins. Mas um pedido como:

myservice.com/are/these/credentials/valid

nunca deve retornar 401 porque essa URL (solicitação) específica é autorizada com ou sem credenciais válidas.

Eu gostaria de ouvir algumas opiniões justificadas de uma forma ou de outra sobre isso. Qual é a maneira padrão de lidar com isso, e a maneira padrão de lidar com isso é logicamente apropriada?

questionAnswers(2)

yourAnswerToTheQuestion