2011-12-20 1 views
2

JNDI와 함께 com.ibm.as400.access.AS400JDBCDataSource를 사용하여 JDBC 연결을 작성하려고합니다. 내가 InitialContext가 설정되면 데이터 소스의 인스턴스가 만들어 졌음을 알았습니다. 그리고 내 코드에서 참조를 얻으면 다른 인스턴스가 AS400 객체 (URL, 사용자 이름 및 연결 설정 포함)의 복사본으로 만들어집니다.JNDI에서 com.ibm.as400.access.AS400JDBCDataSource를 사용할 때 암호가 설정되지 않았습니다.

as400Ds.setPassword("MYPWD"); 

문제를 호출하는 첫 번째 인스턴스 메신저에

는 AS400 인스턴스가 암호를 분실 공유 될 때, 그래서 내가

Password is not set 
+1

이 밝혀 당신은 as400ds.setSavePasswordWhenSerialized (true)를 호출하는 경우; 첫 번째 인스턴스에서 암호가 공유됩니다. 여전히 나를 위해, 이것은 예상 된 동작이 아닙니다. 다른 JDBC 드라이버를 사용하면 비슷한 AFAIK를 수행 할 필요가 없습니다. 아무 이유없이이 이유를 설명 할 수 있습니까? 이 메서드를 호출 할 때 보안 취약점이있을 수 있습니까? 또는 jdbc 드라이버의 나머지 부분과 동등한 것이 필요하지 않습니까? 설명을 주신 덕분에 – jambriz

답변

1

공공 무효 setSavePasswordWhenSerialized (부울 savePassword)이 데이터 소스 객체가 직렬화 될 때 속성의 나머지 부분과 로컬 암호를 저장할지 여부를

설정합니다. 암호가 저장되면, IBM i 시스템에 연결하는 데 필요한 모든 정보가 들어 있기 때문에 오브젝트의 직렬화 된 양식을 보호하는 것은 어플리케이션의 책임입니다. 기본값은 false입니다. 나머지 속성과 함께 암호를 저장하는 것은 보안 상 위험하므로 기본적으로 암호는 저장되지 않습니다. 응용 프로그램 프로그래머가이 위험을 받아들이도록 선택한 경우이 속성을 true로 설정하면 데이터 소스 객체를 serialize 할 때 도구 상자에서 다른 속성과 함께 암호를 저장하도록합니다.

IBM docs

+0

. 웬일인지 내가 질문을 게시했을 때 당신이 제공 한 문서를 찾을 수 없었다. – jambriz

+0

나는 그 것을 알고있다 - 나는 그것에 비틀 거리고 단지의 경우에 쓴다 :) 건배 – Nigul

0

가 밝혀이 오류를 얻을 당신은

를 호출하는 경우
as400ds.setSavePasswordWhenSerialized(true); 

첫 번째 인스턴스에서 암호가 공유됩니다.

여전히 나를 위해, 이것은 예상 된 동작이 아닙니다. 다른 JDBC 드라이버를 사용하면 비슷한 AFAIK를 수행 할 필요가 없습니다.

이유는 무엇입니까?

이 메서드를 호출 할 때 보안 취약점이있을 수 있습니까? 아니면 뭔가가 필요없는 JDBC 드라이버의 나머지 부분과 함께?