我可以使用 Java EE webapp 的 Windows Authentication 连接到 SQL Server 吗?

2022-08-31 17:49:09

我目前正在研究如何使用Windows身份验证而不是SQL Server身份验证从我的Java EE Web应用程序连接到SQL Server数据库。我正在从Tomcat 6.0运行此应用程序,并使用Microsoft JDBC驱动程序。我的连接属性文件如下所示:

dbDriver              = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbUser                = user
dbPass                = password
dbServer              = localhost:1433;databaseName=testDb
dbUrl                 = jdbc:sqlserver://localhost:1433

在使用 SQL Server 身份验证时,以这种方式连接到 SQL Server 数据库没有任何问题。

有没有办法检索用户的 Windows 身份验证的凭据并将该身份验证用于 SQL Server?

更新:我知道在 ASP.net 有一种方法可以设置Windows身份验证以访问webapp,这正是我正在寻找的,除了我想将该令牌传递给SQL Server以访问数据库。


答案 1

我不认为可以将用户凭据从浏览器推送到数据库(这有意义吗?我认为不是)

但是,如果您想使用运行Tomcat的用户的凭据连接到SQL Server,则可以使用Microsoft的JDBC驱动程序。只需像这样构建您的JDBC URL:

jdbc:sqlserver://localhost;integratedSecurity=true;

并将相应的 DLL 复制到 Tomcat 的 bin 目录(sqljdbc_auth.dll随驱动程序一起提供)

MSDN >使用 JDBC 驱动程序连接到 SQL Server >构建连接 URL


答案 2

http://jtds.sourceforge.net/faq.html#driverImplementation

jTDS 使用的 URL 格式是什么?

jTDS 的 URL 格式为:

jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]

...域 指定要在其中进行身份验证的 Windows 域。如果存在并且提供了用户名和密码,则jTDS使用Windows(NTLM)身份验证而不是通常的SQL Server身份验证(即提供的用户和密码是域用户和密码)。这允许非 Windows 客户端登录到仅配置为接受 Windows 身份验证的服务器。

如果域参数存在,但没有提供用户名和密码,jTDS 将使用其本机单一登录库并使用已登录的 Windows 用户的凭据登录(为此,显然需要在 Windows 上登录,登录到域,并且还安装了 SSO 库 - 请参阅 README。SSO 在分发中关于如何执行此操作)。


推荐