【问题标题】:Microsoft JDBC driver URL with Kerberos authentication and ServerSpn带有 Kerberos 身份验证和 ServerSpn 的 Microsoft JDBC 驱动程序 URL
【发布时间】:2015-12-10 19:21:42
【问题描述】:

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

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

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

-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 失败。错误:“空。 验证连接属性。确保 SQL 实例 服务器正在主机上运行并接受 TCP/IP 连接 港口。确保到端口的 TCP 连接没有被 防火墙。”。在 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(Unknown Source) 在 java.sql.DriverManager.getConnection(Unknown Source) 在 microsoftJdbcDriver.getConnection(microsoftJdbcDriver.java:32) 在 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 也可以访问实例

【问题讨论】:

  • 既然你在 Windows 上,为什么不使用 DLL 的 SSPI 实现。它应该更容易。
  • 我正在寻找一个同样适用于非 Windows 客户端的解决方案。稍加修改。进行迭代。 windows 到 windows - 本机身份验证工作,现在尝试 kerberos windows 到 windows,然后是 linux 到 windows。

标签: java sql-server jdbc kerberos


【解决方案1】:

我的网址不正确。令人惊讶的是,一些试验和错误奏效了:

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

【讨论】:

    猜你喜欢
    • 2017-07-13
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2011-04-12
    • 2018-07-06
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多