407 не может туннелировать через прокси
У нас есть один веб-сервис, который вызывает сторонний веб-сервис. Для тестирования этой реализации у нас есть разные среды.
Локальный компьютер разработчика: когда мы запускаем приложение, все работает нормально, и наш веб-сервис может найти сторонний URL. (Локальный компьютер использует ОС Windows)
Локальный сервер разработки. После развертывания приложения на сервере разработки мы не можем получить доступ к стороннему URL-адресу и получить ошибку Http Proxy 407. (У нас Linux с IBM J9 JVM.)
Чтобы обойти эту проблему, мы попытались установить -Dhttps.proxyUser XXX -Dhttps.proxyPassword XXX
, но мы продолжали получать ошибку. Второй вариант, который мы попробовали, использует Authenticator.setDefault(new CustomImplAuthenticator())
, Но удивительно, что JVM не вызывает getPasswordAuthentication
и продолжал бросать ошибку.
Мы снова запустили то же приложение на локальной машине разработчика с authenticator.setdefault
код. Мы могли получить доступ к URL, как было сказано ранее, но на этот раз JVM снова не вызывал getPasswordAuthentication
метод. После поиска по сети мы обнаружили, что с помощью NTLM данные аутентификации разрешаются, и, следовательно, мы чувствуем, что код работает на Windows.
Может кто-нибудь дать мне знать, какие настройки мы должны настроить для приложения, развернутого в Linux, чтобы хотя бы реализация была назначена для Authenticator.setDefault
будет вызван.
1 ответ
Это зависит от того, как вы создаете ваше http-соединение. например, если вы используете Apache HTTPClient, вы можете установить конфигурацию прокси в DefaultHttpClient, вызвав setProxyAuthenticationHandler.
Ваша реализация, выполняющая вызов http, должна знать о прокси.