SQL Server'a bağlanmak için NTLM Kimlik Doğrulamasını kullanma

JDBC sürücüsünü indirin

SQL Server için Microsoft JDBC Sürücüsü, bir uygulamanın NTLM v2 Kimlik Doğrulaması kullanarak bir veritabanına bağlanmak istediğini belirtmek için authenticationScheme bağlantı özelliğini kullanmasına izin verir.

Aşağıdaki özellikler NTLM Kimlik Doğrulaması için de kullanılır:

  • domain = domainName (isteğe bağlı)
  • user = userName
  • password = password
  • integratedSecurity = true

Etki alanı dışında, diğer özellikler zorunludur; herhangi biri eksik olduğunda ve NTLM authenticationScheme özelliği kullanıldığında sürücü hata verir.

Bağlantı özellikleri hakkında daha fazla bilgi için bkz . Bağlantı özelliklerini ayarlama. Microsoft NTLM kimlik doğrulama protokolü hakkında daha fazla bilgi için bkz. Microsoft NTLM.

Açıklamalar

NTLM kimlik doğrulamasının davranışını denetleyen SQL Server ayarlarının açıklaması için bkz. Ağ güvenliği: LAN Manager kimlik doğrulama düzeyi.

Ağaç kesimi

NTLM kimlik doğrulamasını desteklemek için yeni bir kayıt tutucu eklendi: com.microsoft.sqlserver.jdbc.internals.NTLMAuthentication. Daha fazla bilgi için bkz. sürücü işlemini izleme.

Veri Kaynağı

Bağlantı oluşturmak için veri kaynağı kullanılırken, NTLM özellikleri setAuthenticationScheme, setDomain ve (isteğe bağlı olarak) setServerSpn kullanılarak program aracılığıyla ayarlanabilir.

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));
    }
}

Hizmet Asıl Adları

Hizmet asıl adı (SPN), istemcinin bir hizmetin örneğini benzersiz olarak tanımladığı addır.

SPN'yi serverSpn bağlantı özelliğini kullanarak belirtebilir veya sürücünün sizin için oluşturmasına izin vekleyebilirsiniz (varsayılan). Bu özellik şu biçimdedir: "MSSQLSvc/fqdn:port@REALM" burada fqdn, tam etki alanı adıdır, port bağlantı noktası numarasıdır ve REALM, büyük harflerle SQL Server'ın alan adıdır. Varsayılan bölge Sunucunun bölgesiyle aynı olduğundan bu özelliğin bölge bölümü isteğe bağlıdır.

Örneğin, SPN'niz şöyle görünebilir: "MSSQLSvc/some-server.zzz.corp.contoso.com:1433"

Hizmet asıl adları (SPN'ler) hakkında daha fazla bilgi için bkz:

Uyarı

serverSpn bağlantı özniteliği yalnızca Microsoft JDBC Drivers 4.2 ve üzeri tarafından desteklenir.

JDBC sürücüsünün 6.2 sürümünden önce serverSpn'yi açıkça ayarlamanız gerekir. 6.2 sürümünden itibaren, sürücü varsayılan olarak serverSpn'yi derleyebilir, ancak biri serverSpn'yi açıkça da kullanabilir.

Güvenlik riskleri

NTLM protokolü, güvenlik riski oluşturan çeşitli güvenlik açıklarına sahip eski bir kimlik doğrulama protokolüdür. Zayıf bir şifreleme şemasına dayanır ve saldırılara karşı savunmasızdır. NTLM, çok daha güvenli ve önerilen Kerberos ile değiştirildi. NTLM kimlik doğrulaması yalnızca güvenli, güvenilir bir ortamda veya Kerberos kullanılamadığında kullanılmalıdır.

SQL Server için Microsoft JDBC Sürücüsü yalnızca özgün v1 protokolü üzerinde bazı güvenlik geliştirmeleri içeren NTLM v2'yi destekler. Daha fazla güvenlik için TLS Şifrelemesi kullanılması da önerilir.

Şifreleme ile bağlanma hakkında daha fazla bilgi için bkz:

Uyarı

7.4 sürümü için Hem Genişletilmiş Koruma'nın hem de Şifrelemenin etkinleştirilmesi desteklenmez.

Ayrıca bakınız

JDBC sürücüsüyle SQL Server'a bağlanma