Як зберігати облікові дані проксі на macOS, щоб їх використовували системні сервіси?


14

Я використовую macOS Sierra 10.12.6 за корпоративним проксі-сервером NTLM. Мій веб-переглядач та інші програми використовують налаштування системних проксі, в яких я зберегла своє ім’я користувача та пароль для автентифікації з проксі. Це добре працює.

Виникає проблема з системними службами, які намагаються отримати доступ до інформації в Інтернеті і не бачать доступу до облікових даних проксі в моєму обліковому записі користувача. Я бачу наступні спливаючі вікна кожні пару хвилин, і що б я не робив (оновлення своїх облікових даних у системних налаштуваннях або натискання "Не зараз"), спливаюче вікно з’являється знову і знову:

Потрібна автентифікація проксі

Текст у спливаючому віці звучить:

Потрібна автентифікація проксі

Введіть пароль для проксі-сервера HTTP http://xxx.xxx.xxx.xxx:yyyy в системні налаштування.

Що я можу зробити, щоб запобігти появі цього спливаючого вікна?

Що я спробував досі:

  • Оновлено мої дані в системних налаштуваннях ( мережа> розширений> проксі )
  • Скопіював дані облікових даних з моєї брелки для входу в системний брелок, оскільки я прочитав рекомендацію щодо цього в публікації в блозі або на форумі.

Жодне з них не спрацювало, я отримую це спливаюче вікно кожні пару хвилин, і, здається, немає схеми, коли він з’являється.

Оновлення 1:

Як тільки я ввожу свої облікові дані, натиснувши кнопку « Системні налаштування » у діалоговому вікні (що я можу примусити, наприклад, відкривши Safari і почавши вводити URL у вікні розташування), два ключових запису створюються в брелоку входу , обидва з однаковими зміст:

@ xxx.xxx.xxx.xxx (ім'я користувача) Інтернет-пароль сьогодні, 09:10 - авторизація

Обидва записи виглядають однаково, з однаковою назвою та атрибутами. Обидва показують, що програма, яка цього вимагала AuthBrokerAgent:

Контроль доступу до брелка

Оновлення 2:

Я також спробував цю пропозицію: https://discussions.apple.com/message/23848961#message23848961 , скопіювавши записи аутентифікації з брелка входу в системний брелок, а потім перезавантаживши, але це не виправлено. Насправді жахливе поле "Потрібна автентифікація проксі" знову з'явилася під час введення цього тексту ...

Оновлення 3:

Я використовував Wireshark, щоб переглянути трафік між моєю машиною та нашим проксі:

  • Проксі повертається з а 407 Proxy Authentication Requiredі Proxy-Authenticate: NTLM, що відповідає моїм очікуванням, оскільки наш проксі використовує NTLM.
  • Деякі приклади, які я бачив у трафіку (наприклад, iCloud), потім надсилають NTLMSSP_NEGOTIATEвідповідь.
  • Проксі повертається із NTLMSSP_CHALLENGEзапитом
  • Служба відповідає NTLMSSP_AUTHі моїм іменем користувача, яке воно, мабуть, дійшло звідкись.
  • Нарешті, проксі відповідає на "a" 200 Connection established

Для мене це показує, що загалом аутентифікація проксі працює нормально, якщо система може десь отримати ім'я користувача та проксі. Залишається питання, як / де зберігати ім’я користувача / пароль, щоб усі системні служби могли його знайти. Деякі системні служби (я припускаю) не мають ніяких засобів знайти облікові дані проксі, де я їх зараз зберігаю.


Питання, пов’язані з цим: apple.stackexchange.com/questions/117556/…
nwinkler

Який проксі ви використовуєте? Я пам’ятаю (з іншого минулого життя), що проксі, який ми використовували, мав можливість забороняти зберігання паролів, тим самим змушуючи користувача щоразу аутентифікувати. Це може бути так.
Аллан

1
Ви коли-небудь вирішували це питання, оскільки я час від часу стикаюся з тією ж проблемою, і я підключаюся до рішення Citrix VPN. Як тільки спливаюче вікно з’являється, воно просто повторюється, і з часом мій обліковий запис AD закриється. Мені ще потрібно знайти рішення, яке це вирішить. Оскільки я використовую MacBook Pro і більшість відділів інформаційних технологій базується на Windows, я не зміг отримати від ІТ жодної корисної інформації. Після підключення до VPN я працюю над програмами Oracle, що працюють на серверах Solaris SPARC. Я дуже сподіваюся, що ви знайдете спосіб вирішити це питання. stan
Stan Repetta

На жаль, ще не знайшли рішення для цього. Що я в кінцевому підсумку роблю, це те, що я переміщу вікно, яке запитує дані проксі-сервера на бік екрана, не натискаючи жодної кнопки, - що принаймні
замовчує

Відповіді:


9

Це, швидше за все, очікувана поведінка, якщо ваш системний / мережевий адміністратор налаштував проксі-автентифікацію, яка вимагає більше, ніж просто основна схема аутентифікації.

На сторінці Microsoft Обробка автентифікації в розділі Про HTTP Authentication :

Існує два загальних типи схем аутентифікації:

  • Основна схема аутентифікації, де ім'я користувача та пароль надсилаються в чіткому тексті серверу.
  • Схеми відповіді на виклик, які дозволяють створити формат відповіді-відповіді

Схеми відповіді на виклики дозволяють забезпечити більш безпечну автентифікацію. Якщо для запиту потрібна автентифікація за допомогою схеми відповіді-виклику, відповідний код стану та заголовки автентифікації повертаються клієнту. Потім клієнт повинен надіслати запит із переговором. Сервер повертає відповідний код статусу з викликом, і тоді клієнту потрібно буде надіслати запит із належною відповіддю, щоб отримати запитувану послугу.

Якщо проксі-сервер, який ви використовуєте, використовує основну схему аутентифікації , то що збережене у вашому брелоку буде достатньо для аутентифікації. Якщо використовується схема відповіді на виклик , вам, швидше за все, доведеться надати більше інформації - у цьому випадку - повторно ввести свій пароль - для автентифікації; і це те, що ви бачите.

Процес аутентифікації NTLM

Це набагато більше, ніж просто зберігання облікових даних. Клієнт повинен генерувати відповідь на основі згенерованого запиту від сервера. Далі йде дуже скорочений опис процесу аутентифікації з точки зору клієнта / сервера відповідно до документації Microsoft

  • Клієнт відправляє ім'я користувача на сервер (у простому тексті).
  • Сервер генерує 16-байтове випадкове число, яке називається викликом чи ні, і надсилає його клієнту.
  • Клієнт шифрує цей виклик за допомогою хеша пароля користувача та повертає результат на сервер. Це називається відповіддю.
  • Сервер надсилає наступні три елементи до контролера домену:

    • Ім'я користувача
    • Виклик, надісланий клієнту
    • Відповідь, отримана від клієнта
  • DC перевіряє зашифровані виклик та відповідь. Якщо встановлено автентифікацію, доступ надається.

Третій крок вище, вимагає від клієнта хешування випадкового числа, отриманого від сервера. Це по суті означає, що на клієнті macOS нічого не можна зберігати.

Як мінімум, вам потрібно приєднатися до домену Active Directory. Це означає, що вам потрібна підтримка Kerberos, включена та налаштована належним чином для вашої конкретної організації.

У документі "Обробка автентифікації" є ключова фраза, яку я пов’язував вище:

Якщо потрібна автентифікація, у виклику до HttpOpenRequest слід використовувати прапор INTERNET_FLAG_KEEP_CONNECTION. Прапор INTERNET_FLAG_KEEP_CONNECTION необхідний для NTLM та інших типів аутентифікації, щоб підтримувати з'єднання під час завершення процесу аутентифікації. Якщо з'єднання не підтримується, процес автентифікації повинен бути перезапущений з проксі-сервером або сервером.

(Наголос мій)

На підставі представлених симптомів виявляється, що вашій організації потрібна автентифікація проксі; ваше ім’я користувача / пароль дійсні, але він продовжує (повторно) просити автентифікацію. Це, мабуть, тому, що ви втрачаєте стан з'єднання і вам доводиться робити це заново. Що ще більше підкреслює суть….

Щоб вирішити цю проблему, вам потрібно буде зв’язатися з адміністратором мережі, щоб допомогти вам у вирішенні проблем із автентифікацією.


1
Як я можу дізнатися, яка схема аутентифікації використовується? Чи є заголовок HTTP, який я міг би переглянути, коли програма спілкується з проксі? Чи можу я це зробити на мережевій консолі Chrome, чи потрібно використовувати щось на зразок Wireshark?
nwinkler

Більш ніж ймовірно, вам потрібно буде використовувати Wireshark. Майте на увазі, це також може бути зашифрований трафік.
Аллан

1
До питання я додав інформацію про те, що я бачив у Wireshark.
nwinkler

1
Дякуємо, що додали більше інформації про NTLM до вашої відповіді. Я розумію NTLM, і з того, що я бачу з результатів Wireshark, він працює - виклик / відповідь, який ви описуєте, виконується, наприклад, для служб Dropbox або iCloud. Я все ще не впевнений, яка служба вискакує повторні діалогові діалогові вікна проксі. Ваша відповідь містить багато інформації, але поки що мені це не дуже допомагає.
nwinkler

1
Connection Established! = Access Granted. Люди, які можуть підтвердити, що це працює, - це ваші системні / мережеві адміністратори у вашому відділі ІТ.
Аллан


-2

Виконайте таку команду з Console.app:

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

Вас запитають про доступ до брелоків. Погодьтеся додати запис у брелок, і у вас буде доступ без пароля весь час, коли ваша брелок відкрита.


1
Я спробував це, але це не вирішує проблему. Команда встановлює конфігурацію проксі-сервера для мого користувача та зберігає автентифікацію в loginбрелоку мого користувача . Одразу після того, як я це зробив, знову з’явилося діалогове вікно автентифікації проксі, яке я показую вище. Ваша запропонована помилка не вирішує проблему для мене.
nwinkler

тому що ваш брелок для входу заблокований або у вас є подвійні записи
Siarhei Karatkevich

1
Брелок для входу розблокований, я це двічі перевірив. Однак пункт про подвійні записи може бути дійсним. Я видалив усі записи про автентифікацію проксі, які я знайшов у вході та системних брелоках, але як тільки я ввожу свій пароль один раз у діалоговому вікні свого початкового повідомлення, я закінчую двома записами в брелок входу, обидва точно ті самі дані. Якщо я видалю його, він повертається, коли я знову ввожу свої облікові дані.
nwinkler

1
Я спробував securityкоманду, яку ви перерахували - нічого не знаходить. Це робиться, якщо я змінюю find-generic-passwordкоманду на find-internet-password, оскільки Keychain перераховує запис як "Інтернет-пароль".
nwinkler

1
URL-адреса проксі-сервера налаштована як xxx.xxx.xxx.xxx , саме так вона працювала, наприклад, з командного рядка. Я спробую щось захопити за допомогою Wireshark.
nwinkler
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.