NTLM 인증을 사용하여 SQL Server에 연결
Microsoft JDBC Driver for SQL Server에서 응용 프로그램은 NTLM v2 인증을 사용하여 데이터베이스에 연결한다는 것을 나타내기 위해 authenticationScheme 연결 속성을 사용할 수 있습니다.
NTLM 인증에는 다음 속성도 사용됩니다.
- domain = domainName (선택적)
- user = userName
- password = password
- integratedSecurity = true
domain 이외의 다른 속성은 필수이며, NTLM authenticationScheme 속성 사용 시 누락된 속성이 있으면 드라이버에서 오류가 발생합니다.
연결 속성에 대한 자세한 내용은 연결 속성 설정을 참조하세요. Microsoft NTLM 인증 프로토콜에 대한 자세한 내용은 Microsoft NTLM을 참조하세요.
설명
네트워크 보안: LAN 관리자 인증 수준에서 NTLM 인증의 동작을 제어하는 SQL Server 설정에 대한 설명을 확인하세요.
로깅
NTLM 인증 com.microsoft.sqlserver.jdbc.internals.NTLMAuthentication을 지원하기 위해 새로운 로거가 추가되었습니다. 자세한 내용은 드라이버 작업 추적을 참조하세요.
DataSource
데이터 원본을 사용하여 연결을 만들 때 setAuthenticationScheme, setDomain 및 setServerSpn(선택 사항)을 사용하여 NTLM 속성을 프로그래밍 방식으로 설정할 수 있습니다.
SQLServerDataSource ds = new SQLServerDataSource();
ds.setServerName("<server>");
ds.setPortNumber(1433); // change if necessary
ds.setIntegratedSecurity(true);
ds.setAuthenticationScheme("NTLM");
ds.setDomain("<domainName>");
ds.setUser("<userName>");
ds.setPassword("<password>");
ds.setDatabaseName("<database>");
ds.setServerSpn("<serverSpn");
try (Connection c = ds.getConnection(); Statement s = c.createStatement();
ResultSet rs = s.executeQuery("select auth_scheme from sys.dm_exec_connections where session_id=@@spid")) {
while (rs.next()) {
System.out.println("Authentication Scheme: " + rs.getString(1));
}
}
서비스 사용자 이름
SPN(서비스 사용자 이름)은 클라이언트가 서비스 인스턴스를 고유하게 식별하는 이름입니다.
serverSpn 연결 속성을 사용하여 SPN을 지정하거나, 드라이버에서 자동으로 빌드(기본값)하도록 할 수 있습니다. 이 속성은 “MSSQLSvc/fqdn:port@REALM” 형식이 될 수 있습니다. 여기서 fqdn은 정규화된 도메인 이름이고, port는 포트 번호이며, REALM은 대문자로 표시된 SQL Server의 영역입니다. 기본 영역은 서버의 영역과 동일하기 때문에 이 속성의 영역 부분은 선택 사항입니다.
예를 들어 SPN은 “MSSQLSvc/some-server.zzz.corp.contoso.com:1433”과 같을 수 있습니다
SPN(서비스 사용자 이름)에 대한 자세한 내용은 다음을 참조하십시오.
참고 항목
serverSpn 연결 특성은 Microsoft JDBC Driver 4.2 이상에서만 지원됩니다.
JDBC 드라이버 6.2 릴리스 이전에서는 serverSpn를 명시적으로 설정해야 합니다. 6.2 릴리스에서 드라이버는 serverSpn을 기본값으로 빌드할 수 있지만 serverSpn을 명시적으로 사용할 수도 있습니다.
보안 위험
NTLM 프로토콜은 다양한 취약성이 있는 오래된 인증 프로토콜로 보안 위험이 있습니다. 약한 암호화 체계를 기반으로 하며 공격에 취약합니다. NTLM은 훨씬 더 안전하고 권장되는 Kerberos로 대체되었습니다. NTLM 인증은 안전한 신뢰할 수 있는 환경에서만 사용하거나 Kerberos를 사용할 수 없는 경우에만 사용해야 합니다.
Microsoft JDBC Driver for SQL Server는 NTLM v2만 지원하며, 이는 기존의 v1 프로토콜에 비해 보안이 약간 향상되었습니다. 또한 보안 강화를 위해 확장된 보호를 사용하도록 설정하거나 TLS 암호화를 사용하는 것이 좋습니다.
확장된 보호를 사용하도록 설정하는 방법에 대한 자세한 내용은 다음을 참조하세요.
암호화를 사용하여 연결하는 방법에 대한 자세한 내용은 다음을 참조하세요.
참고 항목
7.4 릴리스에서는 확장된 보호와 암호화를 모두 사용하도록 설정하는 것은 지원되지 않습니다.