programing

Java EE webapp에서 Windows 인증을 사용하여 SQL Server에 연결할 수 있습니까?

coolbiz 2021. 1. 18. 08:14
반응형

Java EE webapp에서 Windows 인증을 사용하여 SQL Server에 연결할 수 있습니까?


현재 SQL Server 인증 대신 Windows 인증을 사용하여 Java EE 웹 응용 프로그램에서 SQL Server 데이터베이스에 연결하는 방법을 조사하고 있습니다. Tomcat 6.0에서이 앱을 실행하고 있으며 Microsoft JDBC 드라이버를 사용하고 있습니다. 내 연결 속성 파일은 다음과 같습니다.

dbDriver              = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbUser                = user
dbPass                = password
dbServer              = localhost:1433;databaseName=testDb
dbUrl                 = jdbc:sqlserver://localhost:1433

SQL Server 인증을 사용할 때 이러한 방식으로 SQL Server 데이터베이스에 연결하는 데 문제가 없습니다.

사용자의 Windows 인증 자격 증명을 검색하고 해당 인증을 SQL Server에 사용할 수있는 방법이 있습니까?

업데이트 : ASP.net에는 데이터베이스에 액세스하기 위해 해당 토큰을 SQL Server로 전달하려는 것을 제외하고는 정확히 내가 찾고있는 webapp에 대한 액세스를 위해 Windows 인증을 설정하는 방법이 있다는 것을 알고 있습니다.


브라우저에서 데이터베이스로 사용자 자격 증명을 푸시 할 수 있다고 생각하지 않습니다.

그러나 Tomcat을 실행하는 사용자의 자격 증명을 사용하여 SQL Server에 연결하려면 Microsoft의 JDBC 드라이버를 사용할 수 있습니다. 다음과 같이 JDBC URL을 작성하십시오.

jdbc:sqlserver://localhost;integratedSecurity=true;

그리고 적절한 DLL을 Tomcat의 bin 디렉토리 (드라이버와 함께 제공되는 sqljdbc_auth.dll)에 복사합니다.

MSDN> JDBC 드라이버를 사용하여 SQL Server에 연결> 연결 URL 작성


보다

http://jtds.sourceforge.net/faq.html#driverImplementation

jTDS에서 사용하는 URL 형식은 무엇입니까?

jTDS의 URL 형식은 다음과 같습니다.

jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]

... domain 인증 할 Windows 도메인을 지정합니다. 존재하고 사용자 이름과 암호가 제공되는 경우 jTDS는 일반적인 SQL Server 인증 대신 Windows (NTLM) 인증을 사용합니다 (즉, 제공된 사용자 및 암호는 도메인 사용자 및 암호입니다. ). 이를 통해 비 Windows 클라이언트는 Windows 인증 만 허용하도록 구성된 서버에 로그인 할 수 있습니다.

도메인 매개 변수가 있지만 사용자 이름과 암호가 제공되지 않은 경우 jTDS는 기본 Single-Sign-On 라이브러리를 사용하고 로그인 한 Windows 사용자의 자격 증명으로 로그인합니다 (이 작업을 수행하려면 분명히 Windows에 로그인되어 있어야합니다. 도메인 및 SSO 라이브러리가 설치되어 있어야합니다. 방법은 배포판의 README.SSO를 참조하십시오).


이것은 실제로 나를 위해 작동합니다.

jtdsd 배포와 함께 제공되는 README.SSO에 따라 :

Single Sign On이 작동하려면 jTDS가 기본 SPPI 라이브러리를로드 할 수 있어야합니다 ntlmauth.dll. 이 DLL을 시스템 경로 ( PATH시스템 변수에 의해 정의 됨)의 아무 곳에 나 배치하면 모든 설정이 완료됩니다.

내 jre / bin 폴더에 배치했습니다.

인스턴스 이름의 필요성을 줄이기 위해 SQL 서버 인스턴스 (2302) 전용 포트를 구성했습니다. lportal은 내 데이터베이스 이름입니다.

jdbc.default.url=jdbc:jtds:sqlserver://192.168.0.147:2302/lportal;useNTLMv2=true;domain=mydomain.local

정말 설득력있는 이유가 없다면 MS JDBC 드라이버를 버리는 것이 좋습니다.

대신 jtds jdbc 드라이버를 사용하십시오 . 단일 사인온 (기본 인증)을 구성하는 방법과 JVM에서로드 할 수 있도록 기본 DLL을 배치 할 위치에 대한 jtds 배포의 README.SSO 파일을 읽으십시오.


Windows 인증을 사용하여 MS SQL 2005에 연결하는 데 문제가 있습니다. 이 포럼과 다른 포럼의 도움으로 문제를 해결할 수있었습니다. 내가 한 일은 다음과 같습니다.

  1. JTDS 드라이버 설치
  2. jdbc : jtds :: // [:] [/] [; = [; ...]] 문자열에서 "domain ="속성을 사용하지 마십시오.
  3. 웹 서버 시스템의 c : \ windows \ system32 디렉토리에 ntlmauth.dll을 설치하십시오 (dll 등록이 필요하지 않음).
  4. Apache Tomcat 서비스의 로그온 ID를 SQL 데이터베이스 서버에 대한 액세스 권한이있는 도메인 사용자로 변경합니다 (사용자가 dbo.master에 액세스 할 필요가 없음).

내 환경 : Windows 2003에서 MS SQL 2005 백엔드가있는 Apache Tomcat 6을 호스팅하는 Windows XP clinet

참조 URL : https://stackoverflow.com/questions/167464/can-i-connect-to-sql-server-using-windows-authentication-from-java-ee-webapp

반응형