Проверка подлинности Windows с использованием JDBC и SQL Server - PullRequest
0 голосов
/ 21 января 2019

Мне нужно подключиться с помощью JDBC к SQL Server с использованием проверки подлинности Windows, где я предоставляю имя пользователя и пароль из строки подключения. Возможно ли это с помощью аутентификации Windows?

Я пробовал это как с JTDS, так и с msql-jdbc, но не могу заставить его работать

private  Connection getDBConnection() {
  Connection dbConnection = null;
  try {
         System.out.println("load driver");
         Class.forName("net.sourceforge.jtds.jdbc.Driver");
         log.info("loaded");

         String con = "jdbc:jtds:sqlserver://PNT00-PMP-SQL01:1433/iceware;domain=workgroup;userName=user;password=password";

         dbConnection = DriverManager.getConnection(con);

         log.info("got connection");

        return dbConnection;

   } catch (Exception e) {
         log.error(e.getMessage());
   }
   return dbConnection;
 }

Я пробовал различные комбинации для имени пользователя и домена, но обычно получаю что-то вроде:

019-01-18 14:15:31 ОШИБКА com.pts.demo.service.JdbcService - Ошибка входа для пользователя '/'. ClientConnectionId: 962eeab5-226c-4f85-9911-644a570529ab

Любая помощь высоко ценится

1 Ответ

0 голосов
/ 21 января 2019

Вы должны включить свойства в строку подключения useNTLMv2=true и domain=yourdomain

Это может быть дублировано: Sql Server - соединиться с аутентификацией Windows

Есть и другой способ - https://thusithamabotuwana.wordpress.com/2012/07/19/connecting-to-sql-server-from-java/

Также вы можете попробовать приведенный ниже код для получения соединения SQL JDBC (имя пользователя и пароль указаны в файлах props вместо того, чтобы указывать их в строке соединения)

............
String jdbcUrl = "jdbc:jtds:sqlserver://192.168.10.101:1433/dbName;charset=utf8";
System.setProperty("jsse.enableCBCProtection", "false"); // for SSL enabled MSSQL
Properties prop=new Properties();
prop.put("user",user);
prop.put("password",passWord);
prop.put("domain",domain);
prop.put("useNTLMv2","true");

dbConnection = DriverManager.getConnection(jdbcUrl , prop);
........
...