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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (86)

我目前正在研究如何使用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身份验证访问Web应用程序,这正是我所期待的,除了我想将该标记传递给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使用的URL格式?

jTDS的URL格式是:

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

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

如果域参数存在但未提供用户名和密码,则jTDS使用其本机Single-Sign-On库并使用记录的Windows用户凭证登录(为此,显然需要在Windows上登录一个域,并且还安装了SSO库 - 请参阅关于如何执行此操作的分发版中的README.SSO)。

所属标签

可能回答问题的人

  • 应用案例分享

    1 粉丝490 提问19 回答
  • 学生

    3 粉丝476 提问13 回答
  • uncle_light

    5 粉丝518 提问12 回答
  • 最爱开车啦

    8 粉丝503 提问12 回答

扫码关注云+社区

领取腾讯云代金券