Мое приложение подключается к Интернету к службам HTTP с помощью boost :: asio. Недавно мы добавили поддержку HTTP Proxys и Basic User Authentication. Мы реализовали базовую аутентификацию пользователя, просто отправляя параметры аутентификации с каждым HTTP-вызовом, если пользователь настроил прокси в нашей программе. Параметры отправляются, как описано Вот:
Authorization: Basic <base64 Encoded username:password>
Это работает как минимум для одного пользователя и его прокси-сервера. Другие пользователи сообщают, что их прокси-сервер отвечает
407 Требуется проверка подлинности прокси
Я предполагаю, что некоторые прокси-серверы принимают однофазную аутентификацию, а другие нет. Я не нашел никакой информации о том, что запрашивается двухфазная связь, когда доступ всегда запрещен для первого вызова путем возврата 407, и что принимается только второй вызов.
Наша программа пока не повторяет вызов, если было возвращено 407. Мы должны это добавить?
Я задал этот вопрос раньше в stackoverflow но не получил достаточного ответа.
Как ясно сказано в RFC 2617 (который вы уже должны были прочитать) для аутентификации через прокси требуется, чтобы вы отправили Proxy-Authorization
заголовок, а не Authorization
заголовок, который используется для аутентификации на исходных серверах. Похоже, что один «рабочий» прокси-сервер, который вы нашли, на самом деле «глючил».