Chrome ostrzega mnie, że moje połączenie nie jest bezpieczne podczas uwierzytelniania w SEDE za pomocą konta Google
Kiedy przechodzę do strony logowania Stack Exchange Data Explorer tutaj i klikam przycisk Zaloguj się za pomocą Google , nie loguję się, ale zamiast tego wita mnie wiadomość Chrome chroniąca moją prywatność:
Informacje, które zamierzasz przesłać, nie są bezpieczne Ponieważ witryna korzysta z połączenia, które nie jest całkowicie bezpieczne, Twoje informacje będą widoczne dla innych.
Jestem prawie pewien, że zadziałało to wczoraj bez pokazania mi tego ostrzeżenia, więc albo Chrome stał się bardziej rygorystyczny z dnia na dzień, albo nastąpiła zmiana konfiguracji w SEDE, ponieważ wersja jest nadal na 2020.8.27.79 (kiedy moje żądania ściągnięcia zostaną wdrożone?).
Kiedy sprawdzam ruch sieciowy w konsoli programisty, widzę:
- URL żądania POST:
https://data.stackexchange.com/user/authenticate
- odpowiedź: 302 z nagłówkiem lokalizacji:
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
- odpowiedź: 302 z nagłówkiem lokalizacji:
A potem następne połączenie zostaje zablokowane, gdy 302 powraca (uważni czytelnicy widzieli to nadchodzące):
- POBIERZ URL żądania:
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
- Odpowiedź 302: Lokalizacja:
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
- Odpowiedź 302: Lokalizacja:
Ten ostatni nagłówek lokalizacji używa protokołu HTTP zamiast protokołu HTTPS.
Czy można to zmienić, aby trasa POST w / user / authentication korzystała z bezpiecznego protokołu zamiast zwykłego HTTP?
W jakiś sposób spodziewam się, że ten wiersz w AccountController.cs zwróci teraz coś innego:
private string BaseUrl => Current.Request.Url.Scheme + "://" + Current.Request.Url.Host;
ponieważ ten BaseUrl zostanie dodany jako redirect_uri
tutaj
Jeśli nadrzędny serwer proxy przejął odciążanie SSL, może się zdarzyć, że Current.Request.Url.Scheme
nie zwraca już protokołu HTTPS, od którego zacząłem. Ale może inne przyczyny sprawiają, że schemat nie jest tym, czym był kiedyś.
Wydaje się, że jestem jedyną osobą, która może to odtworzyć w Chrome, a nawet jeśli jest to tylko lokalne dla mojego komputera, nadal wydaje się dobrą radą, aby z wyprzedzeniem naprawić potencjalne zagrożenia bezpieczeństwa, zamiast czekać, aż coś zostanie nadużywane.
Jeśli zaakceptuję ryzyko i kontynuuję, jestem pomyślnie zalogowany.
Odpowiedzi
Fix do tego został wdrożony - Dziękujemy za zgłoszenie i oczu na PR, jak również!
Uwagi: tak, jak podejrzewasz, zakończyliśmy TLS w module równoważenia obciążenia, a wbudowane bity sieciowe ASP nie odczytywały poprawnie nagłówków za tym. W .NET Core jest to rozwiązane, ale Stack Exchange Data Explorer nie jest jeszcze na tym i nie mamy czasu przeznaczonego na wykonanie tej pracy w tym momencie.
Reprodukcja przeze mnie.
Po raz pierwszy, kiedy zarejestrowałem się za pomocą Google, wszystko poszło dobrze.
Następnie wylogowałem się, a po zalogowaniu się za pomocą właśnie zarejestrowanego konta Google powitał mnie następujący komunikat (w języku holenderskim):
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.
To ta sama wiadomość, którą Rene zamieściła w pytaniu.
Korzystanie z Chrome na Androidzie.
Reprodukowane przeze mnie również. Nie tylko logowanie Google jest niestabilne, ale kliknięcie przycisku „Zaloguj się przy użyciu przepełnienia stosu” również powoduje wyświetlenie tego błędu:

Zalogowany lub wylogowany z mojego konta Google.