Menggunakan Autentikasi NTLM untuk menyambungkan ke SQL Server

Unduh driver JDBC

Driver Microsoft JDBC untuk SQL Server memungkinkan aplikasi untuk menggunakan properti koneksi authenticationScheme untuk menunjukkan bahwa ia ingin terhubung ke database menggunakan Autentikasi NTLM v2.

Properti berikut ini juga digunakan untuk Autentikasi NTLM:

  • domain = domainName (opsional)
  • user = userName
  • kata sandi = kata sandi
  • integratedSecurity = true

Selain domain, properti lain wajib, driver akan melemparkan kesalahan jika ada yang hilang ketika properti autentikasiSkema NTLM digunakan.

Untuk informasi selengkapnya tentang properti koneksi, lihat Mengatur properti koneksi. Untuk informasi selengkapnya tentang protokol autentikasi Microsoft NTLM, lihat Microsoft NTLM.

Keterangan

Lihat Keamanan jaringan: Tingkat autentikasi Manajer LAN untuk deskripsi pengaturan SQL Server, yang mengontrol perilaku autentikasi NTLM.

Pencatatan

Pencatat baru telah ditambahkan untuk mendukung autentikasi NTLM: com.microsoft.sqlserver.jdbc.internals.NTLMAuthentication. Untuk informasi selengkapnya, lihat Melacak Operasi Driver.

DataSource

Saat menggunakan sumber data untuk membuat koneksi, properti NTLM dapat diatur secara terprogram menggunakan setAuthenticationScheme, setDomain, dan (opsional) setServerSpn.

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

Nama perwakilan layanan

Nama perwakilan layanan (SPN) adalah nama tempat klien mengidentifikasi instans layanan secara unik.

Anda dapat menentukan SPN menggunakan properti koneksi serverSpn , atau membiarkan driver membuatnya untuk Anda (default). Properti ini dalam bentuk: "MSSQLSvc/fqdn:port@REALM" di mana fqdn adalah nama domain yang sepenuhnya memenuhi syarat, port adalah nomor port, dan REALM adalah ranah SQL Server dalam huruf besar. Bagian realm dari properti ini bersifat opsional karena ranah default sama dengan ranah Server.

Misalnya, SPN Anda mungkin terlihat seperti: "MSSQLSvc/some-server.zzz.corp.contoso.com:1433"

Untuk informasi selengkapnya tentang nama perwakilan layanan (SPN), lihat:

Catatan

Atribut koneksi serverSpn hanya didukung oleh Microsoft JDBC Drivers 4.2 dan yang lebih tinggi.

Sebelum rilis driver JDBC 6.2, Anda harus secara eksplisit mengatur serverSpn. Pada rilis 6.2, driver akan dapat membangun serverSpn secara default, meskipun seseorang juga dapat menggunakan serverSpn secara eksplisit.

Risiko keamanan

Protokol NTLM adalah protokol autentikasi lama dengan berbagai kerentanan, yang menimbulkan risiko keamanan. Ini didasarkan pada skema kriptografi yang lemah dan rentan terhadap serangan. NTLM telah digantikan oleh Kerberos, yang jauh lebih aman dan direkomendasikan. Autentikasi NTLM hanya boleh digunakan di lingkungan yang aman dan tepercaya atau ketika Kerberos tidak dapat digunakan.

Driver Microsoft JDBC untuk SQL Server hanya mendukung NTLM v2, yang memiliki beberapa peningkatan keamanan atas protokol v1 asli. Disarankan juga untuk mengaktifkan Extended Protection, atau menggunakan Enkripsi TLS untuk meningkatkan keamanan.

Untuk informasi selengkapnya tentang cara mengaktifkan Extended Protection dan, lihat:

Untuk informasi selengkapnya tentang menyambungkan dengan enkripsi, lihat:

Catatan

Untuk rilis 7.4, mengaktifkan Extended Protection dan Encryption tidak didukung.

Baca juga

Koneksi ke SQL Server dengan driver JDBC