2012-11-08 3 views
0

이것은 이상한 일입니다. Windows 용으로 구성된 통합 인증을 사용하는 SQL Server 2008 인스턴스에 연결하고 있습니다. 나는 코드에서이 작업을 수행하여 통합 인증을 우회 할 수있는 방법을 발견SQL Server JTDS 연결 문제

Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://mydbserver/myDbname;useNTLMv2=true;username=$jboss;password=1234;domain=MYDOMAIN", "$jboss", "1234"); 

그래서 위의 jtds 라이브러리 드라이버에 이름의 클래스를 수행 한 후 완벽 작동합니다. 그러나, 나는 설정 파일에 연결 문자열로이 둘 필요가 내가 명시 적으로 사용자 이름에 보내지 않고의 getConnection에 메서드 호출을 사용하기 위 변경할 때,이 같은 암호 PARAMS는 :

Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://mydbserver/myDbname;useNTLMv2=true;username=$jboss;password=1234;domain=MYDOMAIN"); 

내가 얻을 네이티브 SSPI 라이브러리는 Windows 인증을 사용하여 인증을 시도하기 때문에 예외가로드되지 않습니다. 그래서 jts 배포판의 dll이 ntlmauth.dll을 bin과 system classpath에 추가 한 다음 도메인에서 "RUNAS.exe"를 수행하여 해결할 수있는 신뢰할 수없는 도메인 로그인 예외가 발생하지만 그로 인해 다시 정상적으로 돌아옵니다. 내가 원하지 않는 통합 인증을 사용해야합니다.

질문에 대해서는 getConnection() 메소드에서 사용자 이름과 암호를 params로 전달하여 문제없이 Connection을 만들 수 있지만 통합 인증을 강제로 수행하지 않는 이유는 무엇입니까? 이것은 코드에서 Connection을 직접 작성한 경우에는 문제가되지 않지만 내 등록 정보 파일에 하나의 연결 문자열이 필요하고 getConnection()을 호출하고 사용자 이름, 비밀번호를 제공하는 연결 문자열을 생성하는 방법을 모르는 경우 params로서.

나는 지겨운이 싫은 문제가 싫지만 빈손으로 나왔다. 모든 입력이 도움이된다. - Duncan

답변

2

매개 변수는 사용자 이름이 아니라 사용자입니다. 그게 당신의 문제를 해결해야합니다. 따라서 시도하십시오 :

Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://mydbserver/myDbname;useNTLMv2=true;user=$jboss;password=1234;domain=MYDOMAIN"); 
+0

오른쪽 위에 !! 그것을 잡도록 도와 주셔서 감사합니다. –