Подключиться к 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:
- Щелкните правой кнопкой мыши на своем сервере в студии управления.
- свойства
- Безопасность
- Аутентификация сервера -> SQL Server и режим аутентификации Windows
Если вы не хотите использовать соединение Integrated Security, установите для этого параметра значение false и вместо этого укажите имя пользователя и пароль в connURL, как показано ниже:
String connectionUrl = "jdbc:sqlserver://localhost:port;databaseName=DB_NAME;integratedSecurity=false;user=login_user;password=login_pwd;";