• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Lotus Web Service Consumer + Http Авторизация - Как?

  • Автор темы nvyush
  • Дата начала
N

nvyush

Здравия всем!

Возникла необходимость подключить Lotus к веб-сервису 1С. Для доступа к сервису необходима стандартная http-авторизация (в post-запрос добавить свойство "Authorization" = "Basic " + encoding, где encoding = BASE64("LOGIN:pASSWORD")). В браузере подключаюсь к серверу, прохожу авторизацию, получаю wsdl, импортирую в Lotus, получаю кучу джава кода. Внимание вопрос — куда, в какой класс, нужно вкрутить эту пару строк:
<!--shcode--><pre><code class='java'>String encoding = new sun.misc.BASE64Encoder().encode("LOGIN:pASSWORD".getBytes());
urlConnection.setRequestProperty("Authorization", "Basic " + encoding);[/CODE]
Можно было бы, конечно, написать post-запрос вызова сервиса "в ручную", но в нём много функций и не хотелось бы делать кучу лишней работы.
 
Z

Zeka

Здравия всем!

Возникла необходимость подключить Lotus к веб-сервису 1С. Для доступа к сервису необходима стандартная http-авторизация (в post-запрос добавить свойство "Authorization" = "Basic " + encoding, где encoding = BASE64("LOGIN:pASSWORD")). В браузере подключаюсь к серверу, прохожу авторизацию, получаю wsdl, импортирую в Lotus, получаю кучу джава кода. Внимание вопрос — куда, в какой класс, нужно вкрутить эту пару строк:
<!--shcode--><pre><code class='java'>String encoding = new sun.misc.BASE64Encoder().encode("LOGIN:pASSWORD".getBytes());
urlConnection.setRequestProperty("Authorization", "Basic " + encoding);[/CODE]
Можно было бы, конечно, написать post-запрос вызова сервиса "в ручную", но в нём много функций и не хотелось бы делать кучу лишней работы.

urlConnection это java.net.URL объект. Он вроде встречается только в XXX_ServiceLocator в паре мест. Туда и пихать.

ПС: Сам не пробовал. Так, поумничать решил... :)
 
N

nvyush

urlConnectionэто java.net.URL объект.
Если бы это было так, я бы не справшивал. urlConnection это объект класса java.net.HttpURLConnection.
В сгенерированном классе XXXLocator есть функция с параметром типа java.net.URL, но это не одно и то же.
 
Z

Zeka

Тогда ещё поумничаю... :)
А если в XXX_Stub добавить:
Код:
_call.setUsername("");
_call.setPassword("");
 
N

nvyush

Автоподстановка в дизайнере 8.5.3 рулит! Все мои мучения помимо скудности инфы были также связаны с использованием дизайнера 8.0.1 (без автоподстановки в java).
Итого:
1) добавил в класс XXXLocator два поля:
<!--shcode--><pre><code class='java'> private final String password;
private final String userName;[/CODE]
2) переписал конструктор класса XXXLocator в виде:
<!--shcode--><pre><code class='java'> public LWSLocator(String u, String p) {
super("HttpLocalhostLotusLWS");
userName = u;
password = p;
}[/CODE]
3) добавил в методы getLWSSoap(java.net.URL portAddress) и getPort(Class serviceEndpointInterface) строки
<!--shcode--><pre><code class='java'> if (userName.length() > 0) _stub.setUsername(userName);
if (password.length() > 0) _stub.setPassword(password);[/CODE]
Спасибо Zeka за наводку
Добавлено
Другой вариант:

А так это выглядит на LS

Почему IBM не потрудилась включить это в справку?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!