运行在Window服务器上的Java应用程序是否可以通过Windows身份validation连接到SQL Server

在问我的问题之前,让我给一些背景。 我在一家主要运行Windows的商店。 我们有几个在Windows服务器上运行的批处理应用程序(主要是2003)。 大多数这些批处理应用程序都是用C#和C ++编写的; 但是我们有一些用Java编写的应用程序。

批量Java应用程序使用JDBC连接到SQL Server 2005数据库。 请注意,我们没有使用应用程序服务器。

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

不幸的是,这些真正不友好的审计人员(对幽默不好的尝试)对于我们决定在Windowsregistry中存储数据库连接信息并不满意。 我们现在正在更新批处理应用程序,以使用Windows Authentatication连接到SQL Server。

对C#和C ++应用程序使用Windows Authentatication不是问题; 但是我坚持为Java应用程序采取的方向。

任何人都可以build议是否有可能使用Windows身份validation连接到Windows服务器上运行的Java批处理应用程序的SQL Server 2005数据库? 我们再次不使用应用程序服务器。

如果这是可能的,你推荐的方法是什么?

我有一个策略来简单地encryption密码,这将使审计人员感到高兴,但是我希望所有批处理应用程序都通过Windows身份validation连接到SQL Server。

Solutions Collecting From Web of "运行在Window服务器上的Java应用程序是否可以通过Windows身份validation连接到SQL Server"

您可以使用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 。 正如Luke Woodward在评论中提到的那样,应该根据用于运行这些程序的JVM来挑选dll。

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

第一步是设置ODBC,你可以去控制面板 – >管理工具 – > ODBC。 使用Windows身份验证帐户添加一个新的DSN连接MS SQL server以下向导安装程序。 第二步与使用SQL server身份验证帐户相同。 但唯一的变化是连接字符串变为:jdbc:odbc:dsn-name。 无需再使用用户名/密码,因为它已连接到服务器。