我目前正在研究如何使用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访问数据库。

有帮助吗?

解决方案

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

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

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

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

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

其他提示

看看

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

jTDS使用的网址格式是什么?

jTDS的网址格式为:

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

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

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

这实际上对我有用:

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

为了使Single Sign On正常工作,jTDS必须能够加载本机SPPI库 ntlmauth.dll 。将此DLL放在系统路径中的任何位置(由 PATH 系统变量定义)并且您已完成设置。

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

我配置了一个专用于sql server实例(2302)的端口,以减少对实例名称的需求 - 就像我做的那样。 lportal是我的数据库名称。

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

除非你有一些非常令人信服的理由,否则我建议放弃MS JDBC驱动程序。

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

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

  1. 安装JTDS驱动程序
  2. 请勿使用“domain =” jdbc中的属性:jtds :: // [:] [/] [; = [; ...]] string
  3. 在网络服务器计算机上的c:\ windows \ system32目录中安装ntlmauth.dll(不需要注册dll)。
  4. 将Apache Tomcat服务的登录标识更改为可以访问SQL数据库服务器的域用户(用户无需访问dbo.master)。
  5. 我的环境: 在Windows 2003上使用MS SQL 2005后端托管Apache Tomcat 6的Windows XP clinet

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top