Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Connect To SQL Server With Windows Authentication From A Linux Machine Through JDBC

Tags:

I want to be able to connect to a SQL Server using jdbc and windows authentication. I saw some answers on the internet saying i should add the following property to the connection string:

integratedSecurity=true; 

And also add

sqljdbc_auth.dll 

To the java path.

But this, as far as i understand applies only when i'm connecting from a Windows machine. When i try this on a Linux machine i get:

java.sql.SQLException: This driver is not configured for integrated authentication 

My question is how do I do it from a Linux machine.

Thanks

like image 286
zuckermanori Avatar asked Jun 15 '16 12:06

zuckermanori


People also ask

How do I connect to SQL Server using Windows Authentication on Linux?

Log in to a domain-joined Windows client using your domain credentials. Make sure SQL Server Management Studio is installed, then connect to your SQL Server instance (for example, mssql-host.contoso.com ) by specifying Windows Authentication in the Connect to Server dialog.

Can JDBC connect to SQL Server?

Connect to SQL Server Using JDBC Driver and Command Line Or, to connect without Windows authentication, use the configured JDBC data source and specify the user name username and the password pwd . For example, this code assumes that you are connecting to a JDBC data source named MSSQLServer .

How do I connect to SQL Server database from Linux?

Type the host name (or IP address) of the machine where your SQL Server instance is running when prompted. To connect to a named instance, use the format machinename \ instancename . To connect to a SQL Server Express instance, use the format machinename \SQLEXPRESS.


2 Answers

Well, eventually I answer my own question: This is not possible to use Windows authentication from a linux machine using the Microsoft JDBC driver. This is possible using the jTDS JDBC driver using the following connection string:

jdbc:jtds:sqlserver://host:port;databaseName=dbname;domain=domainName;useNTLMv2=true; 

Thank you all for all the comments

like image 180
zuckermanori Avatar answered Sep 21 '22 06:09

zuckermanori


TL;DR

It is not possible to use native Windows Authentication for JDBC connections to MSSQL from a JVM running on Linux.


This MSDN article explains the authentiation methods with JDBC on Linux, potential errors, and available options:

https://blogs.msdn.microsoft.com/psssql/2015/01/09/jdbc-this-driver-is-not-configured-for-integrated-authentication/

...in the JDBC 4.0 driver, you can use the authenticationScheme connection property to indicate how you want to use Kerberos to connect to SQL. There are two settings here.

  • NativeAuthentication (default) – This uses the sqljdbc_auth.dll and is specific to the Windows platform. This was the only option prior to the JDBC 4.0 driver.

  • JavaKerberos – Makes use of the Java API’s to invoke kerberos and does not rely on the Windows Platform. This is java specific and not bound to the underlying operating system, so this can be used on both Windows and Linux platforms.

...

The following document outlines how to use Kerberos with the JDBC Driver and walks through what is needed to get JavaKerberos working properly.

Using Kerberos Integrated Authentication to Connect to SQL Server http://msdn.microsoft.com/en-us/library/gg558122%28v=sql.110%29.aspx

like image 34
mjn Avatar answered Sep 22 '22 06:09

mjn