По какой причине предварительная аутентификация была удалена из Apache httpClient?

Как вы можете видеть, в Apache httpclient 3.x был удивительный метод, который можно использовать для уменьшения количества ненужных соединений и данных, передаваемых между клиентом и сервером:

client.getParams () setAuthenticationPreemptive(истина).

http://hc.apache.org/httpclient-3.x/authentication.html

То, что я хочу знать, - почему они удалили это?
Я знаю, что есть подходящие обходные пути, такие как использование перехватчика или изменение заголовка, но мне интересно узнать причины этого изменения: стабильность, производительность, безопасность, соответствие?...

1 ответ

Решение

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

Предотвращение случайного раскрытия конфиденциальной информации стало основной причиной изменения способа превентивной аутентификации в HC 4.x. Благодаря HC 3.x люди могли с легкостью отправлять свои учетные данные на случайные сайты в открытом тексте, даже не осознавая этого.

Начиная с 4.1 HttpClient по умолчанию использует более разумную стратегию: учетные данные для аутентификации кэшируются в контексте выполнения после явной аутентификации и успешной аутентификации. Все последующие запросы в том же сеансе аутентифицируются преимущественно с использованием кэшированного материала аутентификации. Можно по-прежнему принудительно устанавливать приоритетную аутентификацию исходного запроса, предварительно заполнив кэш аутентификации, если это необходимо. Но, по крайней мере, это требует, чтобы пользователь явно предоставил аутентификационный материал для конкретной цели аутентификации.

Другие вопросы по тегам