带有Kerberos身份验证和ServerSpn的Microsoft JDBC驱动程序URL

时间:2015-12-10 19:21:42

标签: java sql-server jdbc kerberos

我在Windows身份验证模式下使用默认实例进行MS SQL设置。我还使用ServerSpn实现了Kerberos作为MSSQlSvc。

我试图在Windows操作系统上从我的Java客户端远程访问SQL Server。

使用以下JVM参数执行Java客户端:

-Djava.security.auth.login.config=path_to_file/client.conf
-Djava.security.krb5.conf=path_to_file/krb5.ini

我使用的网址如下:

jdbc:sqlserver://MSSQLSvc/FQDN_OF_SQL_Server:PORT;integratedSecurity=true;authenticationScheme=JavaKerberos

但是我收到以下错误:

  

com.microsoft.sqlserver.jdbc.SQLServerException:TCP / IP连接   到主机MSSQLSvc / FQDN_OF_SQL_Server,端口1433失败。错误:" null。   验证连接属性。确保SQL的实例   服务器正在主机上运行并接受TCP / IP连接   港口。确保a不阻止与端口的TCP连接   防火墙。&#34 ;.在   com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191)     在   com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:242)     在   com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2293)     在com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:506)     在   com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1523)     在   com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1204)     在   com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1040)     在   com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:554)     在   com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1019)     在java.sql.DriverManager.getConnection(未知来源)at   java.sql.DriverManager.getConnection(未知来源)at   microsoftJdbcDriver.getConnection(microsoftJdbcDriver.java:32)at   microsoftJdbcDriver.displayDbProperties(microsoftJdbcDriver.java:51)     在microsoftJdbcDriver.main(microsoftJdbcDriver.java:93)

client.conf文件:

SQLJDBCDriver {    
com.sun.security.auth.module.Krb5LoginModule required    
useTicketCache=true      
doNotPrompt=true 
};

kb5.ini

[libdefaults]
        default_realm = MYDOMAIN.COM
        clockskew = 300

[realms]
        MYDOMAIN.COM = {
                kdc = MYDOMAIN.COM
                admin_server = MYDOMAIN.COM
}


[domain_realm]
        .domain.com = MYDOMAIN.COM
        domain.com> = <MYDOMAIN.COM



[appdefaults]
autologin = true
forward = true
forwardable = true
encrypt = true'

另请注意:

  1. 防火墙不是问题,同样适用于本机 身份验证,使用sql_auth.dll
  2. SQL Management Studio也可以访问实例

1 个答案:

答案 0 :(得分:1)

我的网址不正确。令人惊讶的是,一些试错工作:

"jdbc:sqlserver://HOST_NAME:1433;ServerSpn=MSSQLSvc/FQDN_OF_THE_HOST:1433@REALM_NAME_IN_CAPS;integratedSecurity=true;authenticationScheme=JavaKerberos;EncryptionMethod=ssl"