programing

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

testmans 2023. 9. 2. 08:06
반응형

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

현재 Java EE 웹 응용 프로그램에서 SQL Server 인증 대신 Windows 인증을 사용하여 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 에서 웹 앱에 액세스할 수 있도록 Windows 인증을 설정할 수 있는 방법이 있다는 것을 알고 있습니다. 단, 데이터베이스에 액세스하기 위해 해당 토큰을 SQL Server에 전달하려는 경우는 제외합니다.

브라우저에서 데이터베이스로 사용자 자격 증명을 푸시할 수 있다고 생각하지 않습니다(그리고 그것이 말이 됩니까?)아닌 것 같습니다)

그러나 Tomcat을 실행하는 사용자의 자격 증명을 사용하여 SQL 서버에 연결하려는 경우 마이크로소프트의 JDBC 드라이버를 사용할 수 있습니다.다음과 같이 JDBC URL을 작성하면 됩니다.

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

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

MSDN > JDBC Driver로 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).

이것은 실제로 저에게 효과가 있습니다.

README에 따라.jtdsd 배포와 함께 제공되는 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 드라이버를 사용합니다.README를 읽습니다.싱글 사인온(네이티브 인증)을 구성하는 방법과 네이티브 DLL을 JVM에서 로드할 수 있도록 하는 위치에 대한 jtds 배포의 SSO 파일.

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

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

내 환경: Windows 2003에서 Apache Tomcat 6과 MS SQL 2005 백엔드를 호스팅하는 Windows XP 클라이언트

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

반응형