Как хранить учетные данные прокси в 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 , скопировав записи аутентификации из цепочки для ключей входа в системную цепочку для ключей, а затем перезагрузившись, но это не помогло. На самом деле, страшное окно «Proxy Authentication Required» снова появилось при наборе этого ...

Обновление 3:

Я использовал Wireshark, чтобы взглянуть на трафик между моей машиной и нашим прокси:

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

Для меня это показывает, что в целом проверка подлинности прокси работает нормально, если система может откуда-то получить имя пользователя и прокси. Остается вопрос, как / где хранить имя пользователя / пароль, чтобы все системные службы могли его найти. Некоторые системные службы (я полагаю) не имеют никаких средств для поиска учетных данных прокси-сервера, где я сейчас их храню.

nwinkler
источник
Связанный вопрос: apple.stackexchange.com/questions/117556/…
nwinkler
Какой прокси вы используете? Я помню (из другой прошлой жизни), что прокси-сервер, который мы использовали, имел возможность запретить хранение паролей, заставляя пользователя каждый раз проходить аутентификацию. Это может быть так.
Аллан
1
Вы когда-нибудь решали эту проблему, потому что я иногда сталкиваюсь с одной и той же проблемой и подключаюсь к решению Citrix VPN. Как только всплывающее окно появляется, оно просто повторяется снова и снова, и в итоге моя учетная запись AD будет заблокирована. Мне еще предстоит найти решение, которое решает эту проблему. Поскольку я использую MacBook Pro, и большинство ИТ-отделов работают на базе Windows, я не смог получить от ИТ никакой полезной информации. После подключения к VPN я работаю над приложениями Oracle, работающими на серверах Solaris SPARC. Я очень надеюсь, что вы найдете способ решить эту проблему. Стан
Стэн Repetta
Извините, пока не нашли решения для этого. В конечном итоге я перемещаю окно, запрашивающее учетные данные прокси-сервера, в сторону экрана, не нажимая ни одну из кнопок, - по крайней мере, это заставляет его
работать

Ответы:

9

Скорее всего, это ожидаемое поведение, если системный / сетевой администратор настроил принудительную аутентификацию через прокси-сервер, которая требует не только простой схемы аутентификации.

Со страницы Microsoft Обработка аутентификации в разделе О HTTP-аутентификации :

Существует два основных типа схем аутентификации:

  • Базовая схема аутентификации, где имя пользователя и пароль отправляются на сервер в виде открытого текста.
  • Схемы ответа на вызов, которые допускают формат ответа на вызов.

Схемы ответа на вызовы обеспечивают более безопасную аутентификацию. Если для запроса требуется аутентификация с использованием схемы запрос-ответ, соответствующий код состояния и заголовки Authenticate возвращаются клиенту. Затем клиент должен повторно отправить запрос с согласованием. Сервер вернет соответствующий код состояния с запросом, а клиенту потребуется повторно отправить запрос с соответствующим ответом, чтобы получить запрошенную услугу.

Если используемый вами прокси-сервер использует базовую схему аутентификации , то того, что сохранено в вашей цепочке для ключей, будет достаточно для вашей аутентификации. Если используется схема ответа на запрос , вам, скорее всего, придется предоставить больше информации - в этом случае - повторно ввести свой пароль - для аутентификации; и это то, что вы видите.

Процесс аутентификации 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. Люди, которые могут подтвердить, что это работает, - администраторы вашей системы / сети в вашем ИТ-отделе.
Аллан
1

Примечание: установите переключатель, чтобы разрешить всем приложениям использовать прокси

путем изменения настроек приложения

Рахул Кумар
источник
-2

Запустите следующую команду из Console.app:

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

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

Сергей Караткевич
источник
1
Я пробовал это, но это не решает проблему. Команда устанавливает конфигурацию прокси для моего пользователя и сохраняет аутентификацию в loginцепочке ключей моего пользователя . Сразу после этого снова появилось диалоговое окно проверки подлинности прокси. Ваше предлагаемое исправление не решает проблему для меня.
nwinkler
потому что ваш брелок для входа заблокирован или у вас двойные записи
Сергей Караткевич
1
Цепочка для ключей входа разблокирована, я дважды проверил это. Однако точка зрения о двойных записях может быть верной. Я удалил все записи для проверки подлинности прокси, которые я обнаружил в цепочках ключей входа в систему и системы, но как только я наберу свой пароль один раз в диалоговом окне в моем исходном сообщении, я получаю две записи в цепочке ключей входа в систему, обе с точно одни и те же данные. Если я удаляю один, он возвращается, когда я снова вводю свои учетные данные.
nwinkler
1
Я попробовал securityуказанную вами команду - она ​​ничего не находит. Это происходит, если я изменяю find-generic-passwordкоманду на find-internet-password, так как цепочка для ключей перечисляет запись как «Интернет-пароль».
nwinkler
1
URL прокси-сервера настроен как xxx.xxx.xxx.xxx , именно так он работает, например, из командной строки. Я попытаюсь захватить что-нибудь, используя Wireshark.
nwinkler