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

cod*_*000 4 java windows sql-server jdbc windows-authentication

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

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

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

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

对C#和C++应用程序使用Windows Authentatication不是问题; 但是我坚持要求Java应用程序.

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

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

我有一个简单的加密密码的策略,这将使审核员满意,但我更愿意让我的所有批处理应用程序通过Windows Authentatication连接到SQL Server.

Vik*_*dor 7

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

  1. 为将用于运行程序的应用程序创建一个Windows帐户.此帐户的凭据将用于连接到服务器.
  2. 此处获取SQL Server的Microsoft JDBC驱动程序.
  3. 按如下方式配置JDBC URL:

    jdbc:sqlserver://<hostname>;databaseName=<DBName>;integratedSecurity=true
    
    Run Code Online (Sandbox Code Playgroud)
  4. 从命令行配置运行Java程序的启动程序以包含以下JVM参数:

    -Djava.library.path="<jdbc driver dll location>"
    
    Run Code Online (Sandbox Code Playgroud)

    其中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身份验证凭据.

  • 必须强调的是,所使用的`sqljdbc_auth.dll`版本必须与用于运行应用程序的JVM的体系结构(x86/x64)匹配,而不一定是服务器的体系结构.如果JVM是32位,64位DLL将无法在64位系统上运行. (2认同)