É permitido que um proxy intermediário adicione cookies durante a autenticação de proxy?

7

Recentemente, encontrei um determinado dispositivo de segurança (BlueCoat) que requer que todas as conexões com a Internet sejam intermediadas por proxy (olá, man-in-the-middle) e, portanto, use um especial Certificado SSL para interceptar todo o tráfego.

Isso impediu a operação normal do Git, mesmo que as propriedades apropriadas http.proxy e http.sslCAInfo tenham sido definidas para garantir que a própria conexão SSL funcione.

Usando a variável de ambiente GIT_CURL_VERBOSE=1 , descobrimos que, ao usar git clone , ocorre um HTTP 407 (autenticação por proxy). O Git preenche essa autenticação corretamente e, no final, o appliance retorna um HTTP 200 com um cabeçalho de cookie Set-Cookie .

O Git então se conectará ao servidor de destino, mas sem o cookie, levando a um HTTP 401.

A solução para isso é definir a opção de configuração do git http.saveCookies=true

Pergunta: É realmente permitido pelos padrões RFC que um proxy intermediário acrescente cookies?

Anthony Rich fez a mesma pergunta para a lista de discussão http-state mas sem qualquer resposta. Ele notou que em

RFC 2965 HTTP State Management Mechanism, 3.5 Caching Proxy Role it says: Proxies MUST NOT introduce Set-Cookie2 (Cookie) headers of their own in proxy responses (requests).

No entanto, a substituição da RFC 6265 não menciona mais isso.

    
por Patrick 15.11.2017 / 16:32

1 resposta

4

Os cookies HTTP são uma bagunça quente. Não existe um padrão real; o RFC, pelo que vale a pena, apenas tenta documentar o que os agentes de usuários reais estão fazendo.

Em qualquer caso, o RFC que você provavelmente deseja ler é RFC 7235 , que especifica que os proxies é suposto enviar um cabeçalho Proxy-Authenticate com o erro 401 para solicitar informações de autenticação, e os agentes de usuários que recebem isso devem tentar novamente a solicitação com um cabeçalho de Autorização de Proxy contendo as informações de autenticação do proxy.

Vários métodos de desafio / resposta podem ser usados para fornecer essas informações; o mais utilizado é "básico" ( RFC 7617 ) como praticamente tudo que fala HTTP o implementa.

A IANA mantém um registro de esquemas de autenticação HTTP conhecidos . Como regra geral, eles usam os cabeçalhos HTTP nomeados anteriormente ou são considerados não compatíveis. Nenhum usa cookies para autenticação.

Se é permitido que um proxy adicione ou altere os cookies, não posso dizer. Os RFCs não parecem muito claros neste ponto. É certamente um comportamento inesperado , especialmente para autenticação. E a BlueCoat tem uma longa história de ser medíocre em qualidade ...

    
por 15.11.2017 / 19:00