Jak przechowywać dane uwierzytelniające proxy w systemie macOS, aby były używane przez usługi systemowe?

14

Używam macOS Sierra 10.12.6 za korporacyjnym proxy NTLM. Moja przeglądarka i inne aplikacje używają systemowych ustawień serwera proxy, w których zapisałem swoją nazwę użytkownika i hasło do uwierzytelnienia się na serwerze proxy. To działa dobrze.

Istnieje stały problem z usługami systemowymi, które próbują uzyskać dostęp do informacji w Internecie i nie widzą dostępu do poświadczeń proxy na moim koncie użytkownika. Co kilka minut widzę następujące okienko wyskakujące i bez względu na to, co robię (aktualizuję swoje poświadczenia w Preferencjach systemowych lub naciskając „Nie teraz”), okienko wyskakuje ciągle i ponownie:

Wymagane uwierzytelnienie serwera proxy

Tekst w wyskakującym okienku brzmi:

Wymagane uwierzytelnienie serwera proxy

Wprowadź hasło do proxy HTTP http://xxx.xxx.xxx.xxx:rrrr w Preferencjach systemowych.

Co mogę zrobić, aby to okno się nie pojawiło?

Rzeczy, których do tej pory próbowałem:

  • Zaktualizowałem moje dane uwierzytelniające w Preferencjach systemowych ( Sieć> Zaawansowane> Serwer proxy )
  • Skopiowałem wpisy poświadczeń z mojego pęku kluczy logowania do pęku kluczy Systemu , ponieważ przeczytałem o tym zalecenie w poście na blogu lub na forum.

Żaden z nich nie zadziałał, otrzymuję to okienko co kilka minut i wydaje się, że nie ma wzorca kiedy pojawia się.

Aktualizacja 1:

Jak tylko wprowadzę swoje dane uwierzytelniające, klikając przycisk Preferencje systemowe w powyższym oknie dialogowym (które mogę wymusić, np. Otwierając Safari i wpisując adres URL w polu lokalizacji), w pęku kluczy logowania tworzone są dwa rekordy , oba o identycznym charakterze zawartość:

@ xxx.xxx.xxx.xxx (nazwa użytkownika) Hasło internetowe Dzisiaj, 09:10 - logowanie

Oba rekordy wyglądają identycznie, z taką samą nazwą i atrybutami. Oba pokazują, że aplikacja, która tego zażądała, to AuthBrokerAgent:

Kontrola dostępu do pęku kluczy

Aktualizacja 2:

Wypróbowałem również tę sugestię: https://discussions.apple.com/message/23848961#message23848961 , kopiując wpisy uwierzytelnienia z pęku kluczy logowania do pęku kluczy systemowych, a następnie ponownie uruchamiając system, ale to nie naprawiło. W rzeczywistości przerażające pole „Wymagane uwierzytelnienie proxy” pojawiło się ponownie podczas wpisywania tego ...

Aktualizacja 3:

Użyłem Wireshark, aby spojrzeć na ruch między moją maszyną a naszym serwerem proxy:

  • Serwer proxy zwraca znak „ 407 Proxy Authentication Requireda” Proxy-Authenticate: NTLM, co jest zgodne z moimi oczekiwaniami, ponieważ nasz serwer proxy używa NTLM.
  • Niektóre przykłady, które widziałem w ruchu (np. ICloud), a następnie wysyłają NTLMSSP_NEGOTIATEodpowiedź.
  • Serwer proxy powraca z NTLMSSP_CHALLENGEżądaniem
  • Usługa odpowiada za pomocą NTLMSSP_AUTHi mojej nazwy użytkownika, którą musiał skądś uzyskać.
  • Serwer proxy w końcu odpowiada komunikatem „ 200 Connection established

Dla mnie to pokazuje, że ogólnie uwierzytelnianie proxy działa poprawnie, jeśli system może skądś uzyskać nazwę użytkownika i proxy. Pozostaje pytanie, jak / gdzie przechowywać nazwę użytkownika / hasło, aby wszystkie usługi systemowe mogły je znaleźć. Niektóre usługi systemowe (zakładam, że) nie mają żadnych środków, aby znaleźć poświadczenia proxy, w których obecnie je przechowuję.

nwinkler
źródło
Powiązane pytanie: apple.stackexchange.com/questions/117556/…
nwinkler
Z jakiego serwera proxy korzystasz? Pamiętam (z innego przeszłego życia), że serwer proxy, którego używaliśmy, mógł nie pozwalać na przechowywanie haseł, zmuszając w ten sposób użytkownika do każdorazowego uwierzytelnienia. Może tak być.
Allan
1
Czy kiedykolwiek rozwiązałeś ten problem, ponieważ czasami spotykam ten sam problem i łączę się z rozwiązaniem Citrix VPN. Gdy pojawi się wyskakujące okienko, dzieje się to w kółko i ostatecznie moje konto AD zostanie zamknięte. Muszę jeszcze znaleźć rozwiązanie, które to rozwiązuje. Ponieważ używam MacBooka Pro, a większość działu IT jest oparta na systemie Windows, nie udało mi się uzyskać żadnych przydatnych informacji od IT. Po nawiązaniu połączenia z VPN pracuję na aplikacjach Oracle działających na serwerach Solaris SPARC. Mam nadzieję, że znajdziesz sposób na rozwiązanie tego problemu. stan
Stan Repetta
Przepraszamy, nie znalazłem jeszcze rozwiązania tego problemu. Skończyło się na tym, że przesunę okno, które prosi o poświadczenia proxy, z boku ekranu, bez naciskania żadnego z przycisków - co powoduje, że jest cicho przynajmniej ...
nwinkler

Odpowiedzi:

9

Jest to najbardziej prawdopodobne zachowanie, jeśli administrator systemu / sieci skonfigurował uwierzytelnianie wymuszające proxy, które wymaga czegoś więcej niż tylko podstawowego schematu uwierzytelniania.

Ze strony Microsoft Obsługa uwierzytelniania w sekcji Informacje o uwierzytelnianiu HTTP :

Istnieją dwa ogólne typy schematów uwierzytelniania:

  • Podstawowy schemat uwierzytelniania, w którym nazwa użytkownika i hasło są wysyłane czystym tekstem na serwer.
  • Schematy wyzwanie-odpowiedź, które pozwalają na format wyzwanie-odpowiedź.

Schematy odpowiedzi na wyzwanie umożliwiają bezpieczniejsze uwierzytelnianie. Jeśli żądanie wymaga uwierzytelnienia przy użyciu schematu wyzwanie-odpowiedź, odpowiedni kod stanu i nagłówki Uwierzytelnij są zwracane do klienta. Klient musi następnie wysłać zapytanie ponownie w drodze negocjacji. Serwer zwróci odpowiedni kod stanu z wyzwaniem, a następnie klient będzie musiał ponownie wysłać żądanie z odpowiednią odpowiedzią, aby uzyskać żądaną usługę.

Jeśli używany serwer proxy korzysta z podstawowego schematu uwierzytelniania , dane zapisane w pęku kluczy wystarczą do uwierzytelnienia użytkownika. Jeśli używany jest schemat odpowiedzi na wyzwanie , najprawdopodobniej będziesz musiał podać więcej informacji - w tym przypadku - ponownie wprowadź hasło - w celu uwierzytelnienia; i to właśnie widzicie.

Proces uwierzytelniania NTLM

To znacznie więcej niż tylko przechowywanie poświadczeń. Klient musi wygenerować odpowiedź na podstawie wygenerowanego żądania z serwera. Poniżej znajduje się bardzo skrócony opis procesu uwierzytelniania z perspektywy klienta / serwera zgodnie z dokumentacją Microsoft

  • Klient wysyła nazwę użytkownika na serwer (w postaci zwykłego tekstu).
  • Serwer generuje 16-bajtową liczbę losową, nazywaną wyzwaniem lub nonce, i wysyła ją do klienta.
  • Klient szyfruje to wyzwanie za pomocą skrótu hasła użytkownika i zwraca wynik na serwer. To się nazywa odpowiedź.
  • Serwer wysyła następujące trzy elementy do kontrolera domeny:

    • Nazwa Użytkownika
    • Wyzwanie wysłane do klienta
    • Odpowiedź otrzymana od klienta
  • Kontroler domeny sprawdza zaszyfrowane wyzwanie i odpowiedź. W przypadku uwierzytelnienia dostęp jest udzielany.

Trzeci krok powyżej wymaga od klienta haszowania losowej liczby uzyskanej z serwera. To z natury oznacza, że ​​na kliencie macOS nie ma nic do przechowywania.

Przynajmniej musisz dołączyć do domeny Active Directory. Oznacza to, że potrzebujesz włączonej obsługi protokołu Kerberos i skonfigurowanej odpowiednio dla konkretnej organizacji.

Istnieje kluczowa fraza w dokumencie „Obsługa uwierzytelniania”, do którego odsyłam powyżej:

Jeśli wymagane jest uwierzytelnienie, w wywołaniu funkcji HttpOpenRequest należy użyć flagi INTERNET_FLAG_KEEP_CONNECTION. Flaga INTERNET_FLAG_KEEP_CONNECTION jest wymagana dla NTLM i innych rodzajów uwierzytelniania w celu utrzymania połączenia podczas przeprowadzania procesu uwierzytelniania. Jeśli połączenie nie zostanie utrzymane, proces uwierzytelniania musi zostać ponownie uruchomiony za pomocą serwera proxy lub serwera.

(Moje podkreślenie)

Na podstawie przedstawionych objawów wydaje się, że Twoja organizacja wymaga uwierzytelnienia w proxy; Twoja nazwa użytkownika / hasło są prawidłowe, ale nadal (ponownie) prosi o uwierzytelnienie. Prawdopodobnie dlatego, że tracisz stan połączenia i musisz to zrobić od nowa. Co dodatkowo podkreśla punkt ....

Aby rozwiązać ten problem, musisz skontaktować się z administratorem sieci, aby pomóc w problemach z uwierzytelnianiem.

Allan
źródło
1
Jak mogę dowiedzieć się, który schemat uwierzytelniania jest używany? Czy istnieje nagłówek HTTP, na który mógłbym patrzeć, gdy aplikacja rozmawia z serwerem proxy? Czy mogę to zrobić w konsoli sieciowej Chrome, czy muszę użyć czegoś takiego jak Wireshark?
nwinkler
Bardziej niż prawdopodobne, musisz użyć Wireshark. Pamiętaj, że może to być także szyfrowany ruch.
Allan
1
Do pytania dodałem informacje z tego, co widziałem w Wireshark.
nwinkler
1
Dziękujemy za dodanie więcej informacji na temat NTLM do swojej odpowiedzi. Rozumiem NTLM i z tego, co widzę z wyjścia Wireshark, działa - opisywane wyzwanie / odpowiedź jest wykonywane, np. Dla usług Dropbox lub iCloud. Nadal nie jestem pewien, która usługa wyświetla wyskakujące okna dialogowe poświadczeń proxy. Twoja odpowiedź zawiera wiele informacji, ale do tej pory tak naprawdę mi nie pomaga.
nwinkler
1
Connection Established! = Access Granted. Osoby, które mogą potwierdzić, że to działa, to administratorzy systemu / sieci w dziale IT.
Allan
1

Uwaga: zaznacz przycisk opcji, aby umożliwić wszystkim aplikacjom korzystanie z proxy

przez uwierzytelnienie aplikacji łańcucha kluczy zmodyfikuj ustawienia

Rahul Kumar
źródło
-2

Uruchom następujące polecenie z Console.app:

networksetup -setwebproxy "Your Interface Name" "web proxy hostname or IP" 
8080 on username password

Zostaniesz zapytany o dostęp do pęku kluczy. Zgadzam się, aby dodać rekord do pęku kluczy, a będziesz mieć dostęp bez hasła przez cały czas, gdy Twój pęku kluczy jest otwarty.

Siarhei Karatkevich
źródło
1
Próbowałem tego, ale to nie rozwiązuje problemu. Polecenie ustawia konfigurację proxy dla mojego użytkownika i przechowuje uwierzytelnianie w loginpęku kluczy mojego użytkownika . Zaraz po tym ponownie pojawiło się okno dialogowe uwierzytelniania proxy, które pokazałem powyżej. Sugerowana naprawa nie rozwiązuje problemu.
nwinkler
ponieważ Twój brelok do logowania jest zablokowany lub masz podwójne rekordy
Siarhei Karatkevich
1
Brelok do logowania jest odblokowany, sprawdziłem to dwukrotnie. Jednak kwestia podwójnych rekordów może być poprawna. Usunąłem wszystkie rekordy uwierzytelnienia proxy, które znalazłem w pęku kluczy logowania i systemowym, ale jak tylko wpisam hasło raz w oknie dialogowym w moim oryginalnym poście, otrzymam dwa rekordy w pęku kluczy logowania, oba z dokładnie te same dane. Jeśli go usunę, wróci, gdy ponownie wprowadzę swoje poświadczenia.
nwinkler
1
Wypróbowałem securitypolecenie, które wymieniłeś - nic nie znajduje. Dzieje się tak, jeśli zmienię find-generic-passwordpolecenie na find-internet-password, ponieważ Brelok wyświetla wpis jako rodzaj „hasła internetowego”.
nwinkler
1
Adres URL proxy jest ustawiony na xxx.xxx.xxx.xxx , tak to działa, np. Z wiersza poleceń. Spróbuję uchwycić coś za pomocą Wireshark.
nwinkler