java - JavaKerberos 在连接到 MS SQL DB 时未使用提供的用户名和密码
问题描述
我正在尝试使用带有提供的用户名和密码的 JavaKerberos 连接到 Ms SQL DB。按照这个https://github.com/microsoft/mssql-jdbc/issues/66#并使用 mssql-jdbc-6.2.2.jre8.jar,它应该在连接字符串中使用提供的用户名和密码来连接到 DB,但是它试图与 AD 用户名连接。下面是我的java代码
public static void main(String[] args) {
Connection con = null;
CallableStatement cstmt = null;
ResultSet rs = null;
try {
// Establish the connection.
SQLServerDataSource ds = new SQLServerDataSource();
ds.setIntegratedSecurity(true);
ds.setAuthenticationScheme("JavaKerberos");
ds.setServerName("myserver");
ds.setPortNumber(1433);
ds.setDatabaseName("users");
ds.setUser("user");
ds.setPassword("password");
con = ds.getConnection();
// Execute a stored procedure that returns some data.
cstmt = con.prepareCall("{call dbo.uspGetEmployeeManagers(?)}");
cstmt.setInt(1, 50);
rs = cstmt.executeQuery();
// Iterate through the data in the result set and display it.
while (rs.next()) {
System.out.println("EMPLOYEE: " + rs.getString("LastName") +
", " + rs.getString("FirstName"));
System.out.println("MANAGER: " + rs.getString("ManagerLastName") +
", " + rs.getString("ManagerFirstName"));
System.out.println();
}
}
// Handle any errors that may have occurred.
catch (Exception e) {
e.printStackTrace();
}
}
还设置 .java.login.config 如下并使用 mssql-jdbc-6.2.2.jre8.jar (从http://www.java2s.com/example/jar/m/download-mssqljdbc622jre8jar-file.html下载)
cat ~/.java.login.config
SQLJDBCDriver {
com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true;
};
我得到以下错误
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user '{my AD user name}'. ClientConnectionId:3a3d0513-1f87-42d8-a799-b9f43374e1a6
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:258)
at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:256)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:108)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$1LogonProcessor.complete(SQLServerConnection.java:4014)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:4292)
看起来它没有使用提供的用户名和密码来建立连接,我在这里错过了什么吗?请让我知道如何解决这个问题。
解决方案
推荐阅读
- javascript - 从控制器调用函数 - angularjs
- javascript - 使用 groupby 重塑对象
- list - 从 Scheme 的列表中交换数字和他们的名字
- javascript - Fancytree:在 DOM 中可见的新子项(通过 LacyLoad 加载)之后的事件
- node.js - 如何在 node.js 应用程序中使用 fastify-ws 向所有连接的套接字发送 http 响应?
- html - Vuejs - 根据当前选项卡动态更改数据表的项目
- android - 在 Wear OS 上禁用“覆盖屏幕进入睡眠模式”手势
- javascript - 如何在 jQuery $.ajax 请求中获取请求 url
- java - 如何使用 JSqlParser 添加新条件?
- c++ - 我想详细了解 C++ 中表达式和语句之间的区别。请选择具体的例子来解释