【问题标题】:java impersonation to connect to sql server using windows authenticationjava模拟使用windows身份验证连接到sql server
【发布时间】:2009-04-29 04:40:19
【问题描述】:

现在我有以下使用经典 asp 和 visual basic 6 构建的架构

我有一个用 VB6 开发的 COM+ 组件,它连接到数据库。我通过一个配置了集成安全性的 .udl 文件来设置 DB conf。

在 Web 服务器 (IIS) 上,我使用 com+ 管理器注册组件,并将其配置为在帐户名下运行,例如 mydomain\appAccount...

在 sql 2005 中,我给予 mydomain\appAccount 适当的权限

从asp,我只是用server.createobject的组件...

我想用java开发一个类似的解决方案,问题如下:

有可能吗?

如何配置域帐户以连接到 sql server 2005 db?

我应该将 db conf 存储在哪里?我应该在哪里配置域帐户?在 tomcat / jetty 配置中?

我希望解决方案尽可能简单直接(我尽量避免使用 glassfish 或 jboss 之类的东西)

嗯,非常感谢...

【问题讨论】:

    标签: java sql-server windows configuration integrated-security


    【解决方案1】:

    您需要做的是确保 Tomcat JVM 进程正在由具有与数据库的受信任连接的用户执行。

    然后您需要在 Tomcat 中配置数据源,按照Bhushan's answer

    以下 MSDN 文章详细介绍了如何设置数据源以使用集成安全性:

    【讨论】:

    • 非常感谢,我仍然无法接受答案,因为我没有时间尝试,但我希望我能尽快完成......
    【解决方案2】:

    所以这是一个非常棘手的问题,我现在也遇到了同样的问题。我还没有解决应用服务器中的模拟问题,但我的团队正在接近。

    到目前为止,我们已经成功地使用 Kerberos 针对域控制器对用户进行身份验证。 SourceForge SPNEGO 和 Spring Security Kerberos Extension 在这方面都非常有帮助。在连接到 SQL Server 时,我们还能够成功模拟运行 Java 应用程序的进程。真正的问题是通过委托进行模拟,因为它要求您获得可以委托给另一个服务的 Kerberos 票证。这是我们目前正在处理的问题。

    如果您要在 SQL Server 中模拟用户,则必须使用 NTLM 或 Kerberos 来完成。 Kerberos 提供了最好的安全性,老实说,我们甚至都懒得尝试使用 NTLM。有两个 JDBC 驱动程序(我知道)允许您使用域帐户连接到 SQL Server:jTDS 和 DataDirect JDBC。 jTDS 是一个 Type-2 JDBC 驱动程序,这意味着它依赖于本地库来为用户获取凭据。 jTDS 只会模拟运行该进程的用户,并且不允许您模拟其他帐户(此外,它只能在 Windows 上执行此操作)。 DataDirect 驱动程序(商业)是一个 Type-4 驱动程序,这意味着它是一个纯 Java 实现(并且将在 *nix 上工作)。这是我们正在使用的驱动程序,它工作得很好。

    如果我的解决方案有效,我会发布它,因为我认为社区中的很多人都在这个问题上受到伤害。

    祝你好运!

    【讨论】:

      【解决方案3】:

      查看此 tomcat 文档以了解如何配置数据源。 http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-07
        • 2021-12-21
        • 2011-04-10
        • 1970-01-01
        • 1970-01-01
        • 2014-07-15
        • 2015-11-11
        相关资源
        最近更新 更多