一个窗口的服务器上运行的Java应用程序可以通过Windows身份验证连接到SQL Server(C

2019-09-22 14:21发布

让我举一些背景之前,我问我的问题。 我在那主要是运行Windows商店。 我们在Windows服务器上(主要是2003)运行多个批处理应用程序。 大多数这些批量应用的都写在C#和C ++; 然而,我们的那个是用Java编写的应用程序屈指可数。

该批次的Java应用程序使用JDBC连接到SQL Server 2005数据库。 请注意,我们不使用应用程序服务器。

目前,我们存储在Windows注册表数据库连接信息(数据库,用户名和密码)。

不幸的是,这些真的不友好审计员(幽默不良企图)不超过存储在Windows注册表中的数据库连接信息的决定感到高兴我们。 现在我们正在更新我们的批处理应用程序连接到使用Windows Authentatication SQL服务器。

使用Windows Authentatication C#和C ++应用程序是没有问题的; 但是我卡上的方向采取的Java应用程序。

任何人都可以建议是否可以使用Windows Authentatication从Windows服务器上运行的Java批处理应用程序连接到SQL Server 2005数据库? 同样,我们不使用应用程序服务器。

如果这是可能你有什么建议的方法?

我有一个策略,简单地对密码进行加密,这将使审计开心,但是我宁愿我所有的批处理应用程序通过Windows Authentatication连接到SQL Server。

Answer 1:

您可以连接到使用Windows身份验证如下Java程序的SQL Server:

  1. 创建将被用于运行程序的应用程序的Windows帐户。 此帐户的凭据将用于连接到服务器。
  2. 从获取用于SQL Server的Microsoft JDBC驱动程序在这里 。
  3. 配置JDBC URL,如下所示:

     jdbc:sqlserver://<hostname>;databaseName=<DBName>;integratedSecurity=true 
  4. 配置从命令行运行Java程序包括以下JVM参数发射器:

     -Djava.library.path="<jdbc driver dll location>" 

    其中位置是先前下载的JDBC驱动程序安装或解压的目录。 这是C:\Program Files\sqljdbc_4.0.2206.100_enu\sqljdbc_4.0\enu\auth\x64在我的案件。 由于卢克伍德沃德在评论中提到的,DLL应根据用于运行这些程序的JVM中回升。

通过上述配置,建立SQL Server的连接将使用运行Java程序/过程中的域用户的Windows身份验证凭据。



Answer 2:

第一步是设置ODBC,你可以去控制面板 - >管理工具 - > ODBC。 添加一个新的DSN使用Windows身份验证帐户以下向导设置连接MS SQL服务器。 第二步是与使用SQL Server身份验证帐户。 但唯一的变化是,在连接字符串更改为:JDBC:ODBC:DSN-名。 有没有必要使用用户名/密码了,因为它已经连接到服务器。



文章来源: Can a Java application running on a Window's Server connect to SQL Server via Windows Authentication