我可以使用Java EE webapp中的Windows身份validation连接到SQL Server吗?

我目前正在研究如何使用Windows身份validation而不是SQL Server身份validation从我的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身份validation时,以这种方式连接到SQL Server数据库时没有问题。

有什么办法可以检索用户的Windows身份validation的凭据,并使用SQL Server的身份validation?

更新 :我知道在ASP.net有一种方法来设置Windows身份validation访问的Web应用程序,这正是我所期待的,除了我想传递到SQL Server访问数据库的标记。

我不认为可以将用户凭据从浏览器推送到数据库(这是否合理?我想不是)

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

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

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

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

看着

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

什么是jTDS使用的URL格式?

jTDS的URL格式是:

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

… domain指定要进行身份validation的Windows域。如果存在并且提供了用户名和密码,则jTDS将使用Windows(NTLM)身份validation,而不是通常的SQL Server身份validation(即提供的用户和密码是域用户和密码)。 这允许非Windows客户端login到仅configuration为接受Windows身份validation的服务器。

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

这实际上适用于我:

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

为了使单点login工作,jTDS必须能够加载本地SPPI库ntlmauth.dll 。 把这个DLL放在系统path的任何地方(由PATH系统variables定义),你就完成了。

我把它放在我的jre / bin文件夹中

我configuration了专用于sql服务器实例(2302)的端口,以减轻对实例名称的需求 – 就像我所做的一样。 lportal是我的数据库名称。

 jdbc.default.url=jdbc:jtds:sqlserver://192.168.0.147:2302/lportal;useNTLMv2=true;domain=mydomain.local 

除非你有一些非常有说服力的理由,否则我build议开通MS JDBC驱动程序。

相反,使用jtds jdbc驱动程序 。 阅读jtds发行版中的README.SSO文件,了解如何configuration单点login(本机authentication)以及放置本机DLL的位置,以确保它可以由JVM加载。

我遇到了使用Windows身份validation连接到MS SQL 2005的问题。 我能够在这个和其他论坛的帮助下解决这个问题。 这是我做的:

  1. 安装JTDS驱动程序
  2. 不要在jdbc中使用“domain =”属性:jtds :: // [:] [/] [; = [; …]] string
  3. 在Web服务器上安装ntlmauth.dll到c:\ windows \ system32目录(不需要注册dll)。
  4. 将Apache Tomcat服务的login标识更改为可访问SQL数据库服务器的域用户(用户无需访问dbo.master)。

我的环境:在Windows 2003上使用MS SQL 2005后端托pipeApache Tomcat 6的Windows XP clinet