我可以从Java EE webapp使用Windows身份验证连接到SQL Server吗?

我可以从Java EE webapp使用Windows身份验证连接到SQL Server吗?,java,sql-server,tomcat,jdbc,jakarta-ee,Java,Sql Server,Tomcat,Jdbc,Jakarta Ee,我目前正在研究如何使用Windows身份验证而不是SQL Server身份验证从Java EE web应用程序连接到SQL Server数据库。我使用Tomcat 6.0运行这个应用程序,并使用Microsoft JDBC驱动程序。我的连接属性文件如下所示: dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver dbUser = user dbPass

我目前正在研究如何使用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中有一种方法可以设置访问Web应用程序的Windows身份验证,这正是我所要寻找的,只是我想将该令牌传递给SQL Server以访问数据库。

除非您有非常令人信服的理由不这样做,否则我建议放弃MS JDBC驱动程序


相反,使用。阅读jtds发行版中的README.SSO文件,了解如何配置单点登录(本机身份验证)以及如何放置本机DLL以确保JVM可以加载本机DLL。

除非您有非常令人信服的理由不这样做,否则我建议放弃MS JDBC驱动程序


相反,使用。阅读jtds发行版中的README.SSO文件,了解如何配置单点登录(本机身份验证)以及如何放置本机DLL以确保JVM可以加载本机DLL。

我认为无法将用户凭据从浏览器推送到数据库(这有意义吗?我认为没有)

但是,如果您想使用运行Tomcat的用户的凭据连接到SQL Server,那么您可以使用Microsoft的JDBC驱动程序。 只需按如下方式构建JDBC URL:

jdbc:sqlserver://localhost;integratedSecurity=true;
并将相应的DLL复制到Tomcat的bin目录(驱动程序提供的sqljdbc_auth.DLL)


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

但是,如果您想使用运行Tomcat的用户的凭据连接到SQL Server,那么您可以使用Microsoft的JDBC驱动程序。 只需按如下方式构建JDBC URL:

jdbc:sqlserver://localhost;integratedSecurity=true;
并将相应的DLL复制到Tomcat的bin目录(驱动程序提供的sqljdbc_auth.DLL)

看看

jTDS使用的URL格式是什么

jTDS的URL格式为:

jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]
jdbc:jtds:://[:][/][;=[;…]
。。。 领域 指定要在其中进行身份验证的Windows域。如果存在并且提供了用户名和密码,jTDS将使用Windows(NTLM)身份验证而不是通常的SQL Server身份验证(即,提供的用户和密码是域用户和密码)。这允许非Windows客户端登录到仅配置为接受Windows身份验证的服务器

如果域参数存在,但未提供用户名和密码,jTDS将使用其本机单点登录库,并使用登录的Windows用户凭据登录(要使其正常工作,显然需要在Windows上登录到域,并安装SSO库——请参阅发行版中的README.SSO,了解如何执行此操作)。

查看

jTDS使用的URL格式是什么

jTDS的URL格式为:

jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]
jdbc:jtds:://[:][/][;=[;…]
。。。 领域 指定要在其中进行身份验证的Windows域。如果存在并且提供了用户名和密码,jTDS将使用Windows(NTLM)身份验证而不是通常的SQL Server身份验证(即提供的用户和密码是域用户和密码)。这允许非Windows客户端登录到仅配置为接受Windows身份验证的服务器


如果域参数存在,但未提供用户名和密码,jTDS将使用其本机单点登录库,并使用登录的Windows用户凭据登录(要使其正常工作,显然需要在Windows上登录到域,并安装SSO库——请参阅发行版中的README.SSO,了解如何执行此操作).

我在使用Windows身份验证连接到MS SQL 2005时遇到问题。在本论坛和其他论坛的帮助下,我能够解决此问题。以下是我所做的:

  • 安装JTDS驱动程序
  • 不要在jdbc:jtds:://[:][/][;=[;…]]字符串中使用“domain=”属性
  • 在web服务器计算机上的c:\windows\system32目录中安装ntlmauth.dll(不需要注册dll)
  • 将ApacheTomcat服务的登录标识更改为具有SQL数据库服务器访问权限的域用户(用户无需访问dbo.master)
  • 我的环境:
    Windows XP客户端在Windows 2003上使用MS SQL 2005后端托管Apache Tomcat 6我在使用Windows身份验证连接到MS SQL 2005时遇到问题。我在本论坛和其他论坛的帮助下解决了此问题。以下是我所做的:

  • 安装JTDS驱动程序
  • 不要在jdbc:jtds:://[:][/][;=[;…]]字符串中使用“domain=”属性
  • 在web服务器计算机上的c:\windows\system32目录中安装ntlmauth.dll(不需要注册dll)
  • 将ApacheTomcat服务的登录标识更改为具有SQL数据库服务器访问权限的域用户(用户无需访问dbo.master)
  • 我的环境:
    Windows XP客户端在Windows 2003上托管Apache Tomcat 6和MS SQL 2005后端这实际上对我很有用:

    根据jtdsd发行版附带的README.SSO:

    为了使单点登录工作,jTDS必须能够加载本机SPPI库
    ntlmauth.dll
    。将此dll放置在系统路径中的任何位置(由
    路径
    系统变量定义),然后就可以进行设置了

    我把它放在