使用JDBC和SQL Server进行Windows身份验证

cgh8pdjw  于 2023-02-11  发布在  SQL Server
关注(0)|答案(1)|浏览(256)

我需要使用JDBC通过Windows身份验证连接到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错误组件演示服务。JdbcService-用户"/"登录失败。客户端连接ID:962eeab5 - 226c-4f85 - 9911 - 644a570529ab
任何帮助都很感激

camsedfj

camsedfj1#

您必须在连接字符串useNTLMv2=truedomain=yourdomain中包含这些属性
这可能是重复的:Sql Server - connect with windows authentication
还有另一种方法-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);
........

相关问题