Я использую 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.NTLMSSP_NEGOTIATE
ответ.NTLMSSP_CHALLENGE
запросомNTLMSSP_AUTH
моим именем пользователя, которое должно быть откуда-то получено.200 Connection established
Для меня это показывает, что в целом прокси-аутентификация работает нормально, если система может откуда-то получить имя пользователя и прокси. Остается вопрос, как/где хранить логин/пароль, чтобы все системные службы могли его найти. Некоторые системные службы (я полагаю) не имеют средств для поиска учетных данных прокси-сервера, где я их сейчас храню.
Скорее всего, это ожидаемое поведение, если ваш системный/сетевой администратор настроил принудительную аутентификацию прокси-сервера, для которой требуется нечто большее, чем просто базовая схема аутентификации.
На странице Microsoft « Обработка аутентификации » в разделе « О HTTP-аутентификации »:
Существует два основных типа схем аутентификации:
- Базовая схема аутентификации, при которой имя пользователя и пароль отправляются на сервер в открытом виде.
- Схемы «вызов-ответ», которые допускают формат «вызов-ответ».
Схемы запрос-ответ обеспечивают более безопасную аутентификацию. Если запрос требует аутентификации с использованием схемы запрос-ответ, клиенту возвращается соответствующий код состояния и заголовки Authenticate. Затем клиент должен повторно отправить запрос с согласованием. Сервер вернет соответствующий код состояния с вызовом, а затем клиенту потребуется повторно отправить запрос с правильным ответом, чтобы получить запрошенную услугу.
Если используемый вами прокси-сервер использует базовую схему аутентификации, того, что сохранено в вашей связке ключей, будет достаточно для вашей аутентификации. Если используется схема ответа на запрос , вам, скорее всего, придется предоставить дополнительную информацию - в этом случае - повторно ввести свой пароль - для аутентификации; и это то, что вы видите.
Это гораздо больше, чем просто хранение учетных данных. Клиент должен сгенерировать ответ на основе сгенерированного запроса от сервера. Ниже приведено очень сокращенное описание процесса аутентификации с точки зрения клиент/сервер в соответствии с документацией Microsoft.
Клиент отправляет имя пользователя на сервер (в открытом виде).
Сервер генерирует 16-байтовое случайное число, называемое вызовом или одноразовым номером, и отправляет его клиенту.
Клиент шифрует этот вызов хэшем пароля пользователя и возвращает результат на сервер. Это называется реакцией.
Сервер отправляет контроллеру домена следующие три элемента:
- Имя пользователя
- Вызов отправлен клиенту
- Получен ответ от клиента
Контроллер домена проверяет зашифрованные запрос и ответ. В случае аутентификации доступ предоставляется.
Третий шаг выше требует , чтобы клиент хешировал случайное число, полученное от сервера. Это по своей сути означает, что на вашем клиенте macOS нечего хранить.
Как минимум, вы должны быть присоединены к домену Active Directory. Это означает, что вам необходимо включить и правильно настроить поддержку Kerberos для вашей конкретной организации.
В документе «Обработка аутентификации», на который я ссылался выше, есть ключевая фраза:
Если требуется аутентификация, при вызове HttpOpenRequest следует использовать флаг INTERNET_FLAG_KEEP_CONNECTION. Флаг INTERNET_FLAG_KEEP_CONNECTION требуется для NTLM и других типов аутентификации, чтобы поддерживать соединение во время завершения процесса аутентификации. Если соединение не поддерживается, процесс аутентификации необходимо перезапустить с помощью прокси или сервера.
(выделено мной)
Судя по представленным симптомам, вашей организации требуется аутентификация на прокси-сервере; ваше имя пользователя/пароль действительны, но он продолжает (повторно) запрашивать аутентификацию. Вероятно, это связано с тем, что вы теряете состояние подключения и вынуждены делать это снова и снова. Что еще больше подчеркивает суть....
Чтобы решить эту проблему, вам нужно будет связаться с вашим сетевым администратором, чтобы помочь вам с проблемами аутентификации.
Connection Established
!= Access Granted
. Люди, которые могут подтвердить , что это работает, являются вашими системными/сетевыми администраторами в вашем ИТ-отделе.Запустите следующую команду из Console.app
:
networksetup -setwebproxy "Your Interface Name" "web proxy hostname or IP"
8080 on username password
Вас спросят о доступе к связке ключей. Согласитесь добавить запись в связку ключей и у вас будет доступ без пароля все время, пока ваша связка ключей открыта.
login
цепочке ключей моего пользователя. Сразу после того, как я это сделал, диалоговое окно аутентификации прокси-сервера, показанное выше, снова появилось. Предлагаемое вами исправление не решает проблему для меня.security
указанную вами команду - ничего не находит. Это произойдет, если я изменю find-generic-password
команду на find-internet-password
, поскольку в связке ключей запись указана как «Интернет-пароль».
нвинклер
Аллан
Стэн Репетта
нвинклер
энка