我必须为支持租户的 Web 应用程序支持多种数据库类型。其中,我成功地支持了 Microsoft 的 SQL Server,通过使用带有“jdbc:jtds:sqlserver://192.168.1.189:1433/ApplicationName”之类的连接字符串的 net.sourceforge.jtds.jdbc.Driver 类。这可行,但它要求用户在 SQL Server 实例中明确定义用户并启用 SQL Server 身份验证。
现在,不可避免地,需求发生了变化,我们应该支持通过 Windows 身份验证连接到 SQL Server。显然,这需要对连接字符串进行某种更改,因为数据库服务器必须能够以某种方式区分传递到数据库连接的凭据是针对 SQL Server 安装中定义的用户还是 Windows 操作系统中定义的用户。但它是什么?
根据互联网的建议采取行动,如果进展到使用;useNTLMv2=true;domain=WORKGROUP
. 这似乎使数据库服务器知道我想以 Windows 用户身份进行身份验证,但实际登录失败
The login is from an untrusted domain and cannot be used with Windows authentication. (code 18452, state 28000)
现在在我的测试设置中,J2EE 应用程序和 SQL 服务器实例实际上都在同一台机器上(尽管在生产中它们可能不在),而且这台计算机仍然不够受信任而无法登录到自己?显然,我在这里遗漏了大部分难题。需要做什么才能让 SQL Server 实例相信启动它的用户实际上可以通过 JDBC 登录到它?
编辑
由于我们在尝试将我们的 Web 应用程序与完整的 Microsoft 基础架构堆栈(SQL Server、Active Directory、域名服务...)集成时已经付出了太多不成功的努力,所以我必须限制这个问题:
有没有人知道一种方法可以通过J2EE 应用程序通过JDBC定义为“Windows 用户”的用户帐户访问SQL Server安装,而无需使用 Active Directory、运行 Web 应用程序的 Windows 机器和专有 DLL?赏金是针对该子问题的任何解决方案。整个问题显然过于广泛,无法在一篇论坛帖子中回答。