Um cliente não pode escolher um mecanismo de autenticação apenas por um número de estado. A resposta do proxy tem de descrever o que aceita.

O HTTP exige que um proxy que gera 407 envie um desafio Proxy-Authenticate. Para um serviço Basic, um exemplo simples é:

HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: Basic realm="Office proxy"

O estado numérico, o nome do cabeçalho e a sintaxe específica do esquema são igualmente importantes. Uma página de erro de marca com a palavra authentication no corpo não substitui o cabeçalho. As implementações personalizadas também têm de enviar uma resposta HTTP 407 completa, incluindo o terminador do cabeçalho e o enquadramento do corpo.

Inspecione a resposta que chegou a este cliente

Registe os campos de estado e de desafio depois de remover os valores secretos. Um intermediário pode ter transformado a resposta, ou um proxy personalizado pode ter construído um desafio inválido. Compare essas evidências com o registo de transações do próprio proxy.

Se o serviço enviar 405 ou outro erro em vez disso, não reetiquete todas essas respostas como 407 dentro de um cliente personalizado. Estaria a ocultar falhas reais da política de métodos e continuaria sem uma negociação de esquema fiável. Corrija o comportamento do serviço ou use o seu caminho de autenticação suportado e documentado.

Vários desafios também exigem um analisador HTTP verdadeiro. Uma vírgula pode separar parâmetros ou desafios; dividir todo o cabeçalho às cegas por vírgulas pode corromper um realm entre aspas. Use a implementação de autenticação suportada pelo cliente em vez de uma sucessão de substituições de cadeias.

Só depois de o desafio ser utilizável faz sentido investigar porque o fornecedor de credenciais não devolveu uma conta.

Artigos relacionados