Подключиться к SQL Server из Linux через JDBC с использованием встроенной защиты (проверка подлинности Windows)?

Эй, у меня проблемы с подключением к SQL Server с кодом Java, работающим в Linux.

Если я установлю integratedSecurity=true, то Java-код завершается ошибкой со следующей ошибкой:

WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:b030b480-453d-4007-8151-a552150f74cd

что имеет смысл, так как не будет sqljdbc.dll файл в линуксе.

Но если я установлю integratedSecurity=falseтогда я получаю следующую ошибку:

 com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'IT_DEV_USER'.

Так кто-нибудь знает, как я могу подключиться к SQL Server с integratedSecurity установить в ложь? (Обратите внимание, что я не могу даже подключиться, когда код Java работает в Windows, когда integratedSecurity установлено в false.)

Если нет, то могу ли я получить integratedSecurity работаешь на линуксе?

4 ответа

Если вы хотите использовать встроенную защиту и использовать драйвер JDBC 4.0 или выше, добавьте следующее в строку подключения jdbc.

integratedSecurity=true;authenticationScheme=JavaKerberos

Дополнительная информация: http://blogs.msdn.com/b/psssql/archive/2015/01/09/jdbc-this-driver-is-not-configured-for-integrated-authentication.aspx

Добавление authenticationScheme=JavaKerberos у меня работает в линуксе, но обязательно убери integratedSecurity=true так как вы не используете Windows.

Вы не можете использовать функцию IntegratedSecurity в системе Linux, так как она привязана к системе Windows и использует вашу аутентификацию Windows. Однако, если вы включите как SQL Server, так и режим аутентификации Windows на вашем SQL Server, то вы можете создать имя входа, сопоставить с соответствующей базой данных и использовать его в Java из Linux.

Чтобы включить проверку подлинности SQL Server:

  1. Щелкните правой кнопкой мыши на своем сервере в студии управления.
  2. свойства
  3. Безопасность
  4. Аутентификация сервера -> SQL Server и режим аутентификации Windows

Если вы не хотите использовать соединение Integrated Security, установите для этого параметра значение false и вместо этого укажите имя пользователя и пароль в connURL, как показано ниже:

String connectionUrl = "jdbc:sqlserver://localhost:port;databaseName=DB_NAME;integratedSecurity=false;user=login_user;password=login_pwd;";
Другие вопросы по тегам