Pergunta

Eu estou escrevendo um pequeno aplicativo que expõe uma simples RESTO-ish HTTP API. Estou tentando preso para decidir como para sinalizar uma falha devido à falta de autorização.

O aplicativo não tem um API para autenticação, mas em vez disso depende da presença de um cookie contendo um token de sessão obtido pelo cliente através de outro serviço. O aplicativo verifica a sessão e usa a identidade obtida através do processo de verificação para executar a autorização específica de aplicação. Não há nenhuma maneira para um cliente para autenticar diretamente para este aplicativo.

Meu problema é que o código de status HTTP óbvia para rejeitar solicitações não autorizadas, "401 não autorizado", é especificado em termos de cabeçalho "WWW-Authenticate". Consulte RFC2616 seg 10.4.2 .

A resposta deve incluir um WWW-Authenticate campo de cabeçalho (seção 14,47) contendo um desafio aplicável ao recurso solicitado.

Eu não posso acreditar que este é um problema incomum. É comum simplesmente sobrecarregar 401 para incluir usos mais gerais? E sobre navegadores aparecendo auth / e diálogos (que, aliás, eu não vi em meus testes, então talvez isso não acontece por mensagens)?

A linha inferior: é OK para usar 401 neste contexto, ou há uma solução melhor

Foi útil?

Solução

Normalmente, você iria enviar um 401 se o cliente pode autenticar e resolver o problema, mas desde que você não fornecer uma maneira para autenticar na API, eu sugiro retornando um erro 403 (proibido) em vez. Isso não vai exigir o cabeçalho e irá indicar ao cliente que ele é incapaz de acessar o serviço.

Outras dicas

Voltar algo como isto:

HTTP/1.1 401 Unauthorized
Location: https://example.com/auth-app/login
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top