Ошибка пароля не установлена ​​при использовании com.ibm.as400.access.AS400JDBCDataSource с JNDI - PullRequest
2 голосов
/ 21 декабря 2011

Я пытаюсь установить соединение JDBC, используя com.ibm.as400.access.AS400JDBCDataSource с JNDI. Когда я отлаживаю, я замечаю, что когда InitialContext настроен, создается экземпляр источника данных. И когда я получаю ссылку из своего кода, создается другой экземпляр с копией объекта AS400 (который содержит URL, имя пользователя и конфигурацию соединения).

В первый раз я вызываю

as400Ds.setPassword("MYPWD");

Проблема в том, что когда экземпляр AS400 используется совместно, пароль теряется, поэтому я получаю эту ошибку

Password is not set

Ответы [ 2 ]

1 голос
/ 03 ноября 2014

public void setSavePasswordWhenSerialized (boolean savePassword)

Устанавливает, сохранять ли пароль локально с остальными свойствами, когда этот объект источника данных сериализуется.Если пароль сохранен, это зависит от приложения, чтобы защитить сериализованную форму объекта, поскольку он содержит всю необходимую информацию для подключения к системе IBM i.По умолчанию установлено значение false.Сохранение пароля с остальными свойствами представляет угрозу безопасности, поэтому по умолчанию пароль не сохраняется.Если разработчик приложения принимает этот риск на себя, задайте для этого свойства значение true, чтобы заставить Toolbox сохранять пароль с другими свойствами при сериализации объекта источника данных.

IBM docs

0 голосов
/ 22 декабря 2011

Оказывается, если вы позвоните

as400ds.setSavePasswordWhenSerialized(true);

при первом созданном экземпляре пароль является общим.

Тем не менее, для меня это не ожидаемое поведение. С любым другим драйвером JDBC нет необходимости делать что-либо подобное AFAIK.

Кто-нибудь хочет объяснить причину этого?

Возможно ли, что при вызове этого метода возникает уязвимость безопасности? или с остальными драйверами jdbc, которым что-то не нужно?

...