O Chrome me avisa que minha conexão não é segura ao autenticar no SEDE com uma conta do Google

Dec 13 2020

Quando vou para a página de login do Stack Exchange Data Explorer aqui e clico no botão Login usando o Google , não estou fazendo login, mas sim uma mensagem do Chrome protegendo minha privacidade:

As informações que você está prestes a enviar não são seguras Como o site está usando uma conexão que não é totalmente segura, suas informações ficarão visíveis para outras pessoas.

Tenho certeza de que funcionou ontem sem me mostrar aquele aviso, então ou o Chrome ficou mais rígido durante a noite ou uma mudança de configuração aconteceu no SEDE porque a revisão ainda está em 2020.8.27.79 (quando minhas solicitações pull serão implantadas?).

Quando inspeciono o tráfego de rede no console do desenvolvedor, vejo:

  • URL de solicitação POST: https://data.stackexchange.com/user/authenticate
    • resposta: 302 com um cabeçalho de localização: https://accounts.google.com/o/oauth2/auth?client_id=[blah]&scope=openid+email&redirect_uri=http%3a%2f%2fdata.stackexchange.com%2f[more blah]&response_type=code

E então a próxima chamada é bloqueada, quando o 302 é retornado (leitores cuidadosos viram esta chegando):

  • URL de solicitação GET: https://accounts.google.com/o/oauth2/auth?client_id=[blah]&scope=openid+email&redirect_uri=http%3a%2f%2fdata.stackexchange.com%2f[more blah]&response_type=code
    • Resposta 302: Localização: http://data.stackexchange.com/user/oauth/google?state=[blah]&code=[more blag]&scope=email+openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&authuser=0&prompt=none

Esse último cabeçalho de localização usa o protocolo HTTP em vez do protocolo HTTPS.

Isso pode ser alterado para que a rota POST em / user / authenticate use um protocolo seguro em vez de HTTP simples?

De alguma forma, espero que esta linha no AccountController.cs retorne algo diferente agora:

private string BaseUrl => Current.Request.Url.Scheme + "://" + Current.Request.Url.Host;

porque esse BaseUrl é adicionado como o redirect_uri aqui

Se um proxy upstream assumiu o descarregamento de SSL, pode muito bem ser que Current.Request.Url.Schemenão retorne mais o protocolo HTTPS com o qual comecei. Mas talvez outras causas façam com que o esquema não seja o que costumava ser.

Parece que sou o único que pode reproduzir isso no Chrome e, mesmo que seja apenas local para minha máquina, ainda parece um bom conselho corrigir preventivamente os riscos de segurança em potencial, em vez de esperar que as coisas sejam abusadas.

Se eu aceitar o risco e continuar, meu login será bem-sucedido.

Respostas

8 NickCraver Dec 14 2020 at 04:44

Uma correção para isso foi implantada - obrigado pelo relatório e olhos no PR também!

Observações: sim, como você suspeitou, encerramos o TLS no balanceador de carga e os bits de rede ASP integrados não estavam lendo os cabeçalhos corretamente por trás disso. No .NET Core, isso está resolvido, mas o Stack Exchange Data Explorer ainda não foi instalado e não temos tempo alocado para realizar esse trabalho neste momento.

5 Luuklag Dec 13 2020 at 16:41

Reproduzido por mim.

Primeiro, quando me registrei no Google, tudo correu bem.

Em seguida, desconectei-me e, ao fazer login usando a conta do Google recém-registrada, recebi a seguinte mensagem (em holandês):

De gegevens die je wilt sturen, zijn niet beveiligd Omdat de site een verbinding gebruikt die niet volledig is beveiligd, zijn je gegevens zichtbaar voor anderen.

Que é a mesma mensagem que Rene postou na pergunta.

Usando o Chrome no Android.

1 Ollie Dec 14 2020 at 03:46

Reproduzido por mim também. Não apenas o login do Google está sendo interrompido, mas clicar no botão "Login using Stack Overflow" também gera este erro:

Conectado ou desconectado da minha conta do Google.