Java 在公共DC下添加的两个虚拟机是否可以在没有用户名/密码的情况下对MsSQL服务器执行Kerberos Windows身份验证?
我在公共DC下添加了2个VM,并使用同一用户登录了这两台机器。e、 g.Java 在公共DC下添加的两个虚拟机是否可以在没有用户名/密码的情况下对MsSQL服务器执行Kerberos Windows身份验证?,java,sql-server,kerberos,Java,Sql Server,Kerberos,我在公共DC下添加了2个VM,并使用同一用户登录了这两台机器。e、 g.管理员 我想检查在VM1上运行的MsSQL服务器和在VM2上运行的MsSQL服务器是否能够在不提供用户名/密码的情况下执行指向VM1的MsSQL服务器的以下java代码?(因为,我使用同一个DC用户登录了这两台机器?) 我这边不行。。我正在尝试检查我期望在没有有效用户名/pwd的情况下建立的连接是否正确?我不确定我是否遵守了您在这里提出的要求。您似乎在问“这行得通吗”,但是,您处于更好的位置,可以测试它是否行得通,因为您处于
管理员
我想检查在VM1上运行的MsSQL服务器和在VM2上运行的MsSQL服务器是否能够在不提供用户名/密码的情况下执行指向VM1的MsSQL服务器的以下java代码?(因为,我使用同一个DC用户登录了这两台机器?)
我这边不行。。我正在尝试检查我期望在没有有效用户名/pwd的情况下建立的连接是否正确?我不确定我是否遵守了您在这里提出的要求。您似乎在问“这行得通吗”,但是,您处于更好的位置,可以测试它是否行得通,因为您处于脚本将在其中运行的环境中。如果脚本没有如您所期望的那样运行,那么告诉我们为什么它没有运行。您通读了吗?@Larnu,因为它在我这边不起作用。。我正在尝试检查我期望在没有有效用户名/pwd的情况下建立的连接是否正确?是的,您可以在两台不同的计算机上使用同一用户登录。Kerberos不使用用户名和密码,所以不知道为什么要传递这些。当您说“登录”时,这是否意味着当前登录的Windows用户是?另外,虚拟机和SQL Server计算机是否都属于同一个域?是的。。你说得对。谢谢@Charlieface
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* This program demonstrates how to establish database connection to Microsoft
* SQL Server.
*
*/
public class JdbcSQLServerConnection {
public static void main(String[] args) {
Connection conn = null;
try {
String dbURL = "jdbc:sqlserver://<ip of machine 1 where MsSQL Server>:1433;integratedSecurity=true;authenticationScheme=javaKerberos";//;authentication=NotSpecified
String user = "myrandomUsers";
String pass = "myrandomPwd";
conn = DriverManager.getConnection(dbURL, user, pass);
if (conn != null) {
DatabaseMetaData dm = (DatabaseMetaData) conn.getMetaData();
System.out.println("Driver name: " + dm.getDriverName());
System.out.println("Driver version: " + dm.getDriverVersion());
System.out.println("Product name: " + dm.getDatabaseProductName());
System.out.println("Product version: " + dm.getDatabaseProductVersion());
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
if (conn != null && !conn.isClosed()) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
C:\Users\Administrator.WIN2016\Desktop\MsSQL1>java -cp mssql-jdbc-8.4.1.jre8.jar
; JdbcSQLServerConnection
com.microsoft.sqlserver.jdbc.SQLServerException: Cannot login with Kerberos prin
cipal administrator, check your credentials. Kerberos Login failed: Integrated a
uthentication failed. ClientConnectionId:40a56fce-e909-483d-ab1d-56900d44311d du
e to javax.security.auth.login.LoginException (Pre-authentication information wa
s invalid (24))