我目前正在研究如何使用Windows身份验证而不是SQL Server身份验证从我的Java EE web应用程序连接到SQL Server数据库。我在Tomcat6.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的身份验证?
UPDATE:我知道在ASP.net中有一种方法可以设置访问webapp的Windows身份验证,这正是我正在寻找的,除非我想将该令牌传递给SQL Server以访问数据库。
发布于 2008-12-10 15:23:03
我不认为可以将用户凭据从浏览器推送到数据库(这有意义吗?我不这么认为)
但是,如果您希望使用运行Tomcat的用户的凭据连接到SQL Server,则可以使用Microsoft的JDBC驱动程序。只需像这样构建您的JDBC URL:
jdbc:sqlserver://localhost;integratedSecurity=true;
并将适当的DLL复制到Tomcat的bin目录(驱动程序附带的sqljdbc_auth.dll)中。
MSDN > Connecting to SQL Server with the JDBC Driver > Building the Connection URL
发布于 2009-04-29 06:29:11
看
http://jtds.sourceforge.net/faq.html#driverImplementation
jTDS使用的网址格式是什么?
jTDS的URL格式为:
jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]
..。域指定要在其中进行身份验证的Windows域。如果存在,并且提供了用户名和密码,jTDS将使用Windows (NTLM)身份验证,而不是通常的SQL Server身份验证(即,提供的用户和密码是域用户和密码)。这允许非Windows客户端登录到仅配置为接受Windows身份验证的服务器。
如果domain参数存在,但没有提供用户名和密码,jTDS将使用其本机单点登录库,并使用登录的Windows用户的凭据登录(为此,用户显然需要在Windows上,登录到域,并且安装了SSO库--请参考发行版中的README.SSO了解如何做到这一点)。
发布于 2012-01-12 22:42:43
这对我来说真的很有效:
根据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
https://stackoverflow.com/questions/167464
复制相似问题