Java Агент. Post Запрос С Авторизацией

erdi

Well-Known Member
20.08.2008
265
36
35
Краснодар
#1
Есть Java агент, который по REST API создает POST запрос.
Java:
static class MyAuthenticator extends Authenticator {
   public PasswordAuthentication getPasswordAuthentication() {
	  System.out.println("trying to authenticate");
	  return new PasswordAuthentication("login", "password".toCharArray());
   }
}
 
Authenticator.setDefault(new MyAuthenticator());
URL urlObj = new URL(url);
HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
System.out.println("Соединение с " + url + " установлено.");
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/xml");
con.setDoOutput(true);
OutputStream outputStream = con.getOutputStream();
 
// формирование xml документа
XMLOutputter xmlOutput = new XMLOutputter();
Format format = Format.getPrettyFormat();
 
xmlOutput = new XMLOutputter(format);
xmlOutput.output(doc, outputStream);
 
System.out.println("Получение ответа от сервера..");
 
StringBuffer result = new StringBuffer();
BufferedReader rd = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
   result.append(line).append("\n");
}
 
respCode = con.getResponseCode();
Данный агент успешно работал, но вот в моменте с переводом времени и обновления jvm, соответственно сервер с 8.5.5 обновился до 8.5.6, агент стал вываливаться с ошибкой "Router: Agent printing: Server redirected too many times (20)"
Причем что характерно, после перезагрузки сервера 1 раз агент работает корректно, но вот уже следующие запуски возвращают ошибку.
Были предположения на кодировку, т.к. при переходе на 8.5.6 в java по-умолчанию снова кодировка стала cp1251 вместо utf-8. Но выставления utf-8 в самом агенте не решает проблему.
Также были предположения на неправильные логин и пароль, но эта же ошибка при разных логинах и паролях и ведут они себя также(после перезагрузки сервера запускаются, после уже нет)
Агент не зависает. Сервера лотуса на AIX и SLES, под виндой нет сервером, поэтому не тестировалось. Логин и пароль доменного пользователя, сами сервера в домен заведены.
Может кто встречался с этой проблемой.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 433
351
homepage.mac.com
#2
а может связано с сервисом - куда обращается агент (там чего-то поменяли)
 

erdi

Well-Known Member
20.08.2008
265
36
35
Краснодар
#3
на сервисе стоит ntlm аутентификация и недавно там были работы по блокировки входа со служебных учетных записей(в агенте используется такая учетка для утентификации), но
1) клянутся, что ничего серьезного в методе аутентификации не меняли
2) после рестарта сервера лотуса 1 раз агент выполняется нормально, а вот последующие запуски - вылетает
3) если запустить из-под eclipsa на локальной машине, то также все нормально сработает с этими же логином и паролем
если бы не 2 и 3 пункт, то однозначно по 1-му пункту недоговаривают чего-то.
Такое ощущение, как-будто кэшируется запрос и уже 2-й раз гоняет сам себя. Если бы кеш был на стороне сервиса, тогда перезагрузка лотуса не приводила бы к тому, что 1 раз агент срабатывал, значит что-то на стороне лотуса какой-то кэш включается или что-то из этого...пока идей нет с чем это может связано
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 433
351
homepage.mac.com
#4
эклипс на той же машине?
кешироваться может в привязке к IP
проверить запрос - поставить снифер (wireshark, tcpdump...)
 

erdi

Well-Known Member
20.08.2008
265
36
35
Краснодар
#5
обнаружил такую закономерность
1) агент изначально висит на входящих письмах и обрабатывает их. Если перестартовать роутер, тогда снова можно 1 письмо отправить и агент сработает
2) если агента повесить, например, на LS агента и запускать на сервере, то также он запустится 1 раз и снова будет выдавать ошибку. Но вот что перегрузить из тасков - пока не нашел. рестарт сервера естественно снова позволит запустить 1 раз агента из LS агента
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 433
351
homepage.mac.com
#6
а либы только штатные или есть "внешние", если есть - то где лежат (в БД или в ФС)?
 

erdi

Well-Known Member
20.08.2008
265
36
35
Краснодар
#7
commons-codec-1.6.jar, jdom-2.0.5.jar, jdom-2.0.5-contrib.jar
лежат как в ФС, так и БД
агент 3 месяца работал нормально без нареканий, сбой совпал с обновлением jvm под новый час. пояс(сбросились по-умолчанию все пермишины) + работы на стороне сервиса. И кто виноват не понятно. мы на их работы наговариваем, они на наши
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 433
351
homepage.mac.com
#8
тогда установить истину - поднять тестовый сервак без патча
 

erdi

Well-Known Member
20.08.2008
265
36
35
Краснодар
#9
после экспериментов с разными версиями и FP выяснилось следующее.
при откатах назад с 8.5.3.6 до 8.5.3.5 проблема не исчезала
на 9.0 было все ок
на 9.0.1 все ок
на 9.0.1 FP2 снова была ошибка с авторизацией при 2-м и последующих запросах до сервера с ntlm авторизацией
видимо ibm внесла какие-то глобальные изменения в свою версию java, в FP6 для 8.5.3 и FP2 для 9.0.1 :rolleyes:
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 433
351
homepage.mac.com
#10
на 9.0.1 FP2 снова была ошибка с авторизацией при 2-м и последующих запросах до сервера с ntlm авторизацией
авторизацию розлива 1.0 уже забанили все, почти... :rolleyes:
Чтобы видеть этот контент необходимо: Войти или зарегистрироваться

Чтобы видеть этот контент необходимо: Войти или зарегистрироваться



Добавлено: http://ntlmv2.blogspot.ru/2013/12/ntlmv2-a...ava-client.html