代码之家  ›  专栏  ›  技术社区  ›  macf00bar

如何在MSSQL2008+Delphi7+ADO中使用Windows身份验证,但用户仍会输入密码?

  •  5
  • macf00bar  · 技术社区  · 15 年前

    有人知道是否有可能将MSSQL2008设置为使用Windows身份验证,但用户仍然必须输入其Windows密码才能登录(这必须使用Delphi7+ADO完成)?

    [编辑]:只是澄清一下,SQL Server和客户端都在同一个Windows域中。

    [编辑2]:我不想编写自己的新logindialog,而是让SQL Server为我编写,或者说dbconn控件。

    亲切的问候, 莱因哈德

    3 回复  |  直到 15 年前
        1
  •  2
  •   Community CDub    8 年前

    如果您真的想这样做,您可以提示用户(重新)输入凭证,然后根据成功/失败进行适当的验证和处理。为此,您需要 LogonUser 功能。此时,您甚至可以允许用户使用除用于登录计算机的凭据以外的其他凭据登录数据库,方法是使用 ImpersonateLoggedOnUser 功能。请看 this answer .

        2
  •  2
  •   Mark Robinson    15 年前

    如果你让用户在你的应用程序中再次输入他们的域用户和密码,这将是相当不安全的,并且可能会降低对你的应用程序的信任。正如Jeroen上面提到的,使用windows auth的整个想法是使用现有的用户会话!

    @马克罗宾逊:我不明白为什么 申请将不安全?用户 甚至不知道两者的区别 SQL身份验证和Windows身份验证直到 现在在我们的旧体系中,他们总是 必须提供用户名/密码,因为 只使用了SQL身份验证

    用户不知道这两者之间的区别,所以请告诉他们方法-如果他们已经登录到他们的域帐户,并且通过软件的某种机制,他们可以使用您的应用程序,然后无论如何让他们通过单击进入-显示一个启动屏幕,让他们知道您“用他们的域凭据自动登录他们…”或类似的,即你让他们知道你在为他们节省时间。

    简单地说,您添加了一个不需要的步骤是不安全的,因为Windows身份验证登录消除了这个问题。

    Eddi1:

    重新阅读原来的问题,我可以看到,操作只是想弹出默认的Windows登录提示,以确保安全。

    我建议:

    1. 确保有一个屏幕保护程序,其相关超时将强制重新登录
    2. 使用LockWorkstation强制执行重新登录事件(可能首先显示一条消息,按照“为了安全起见,您的工作站将被锁定以确保您是您所说的人”)。
        3
  •  1
  •   Douglas    15 年前

    从scott w链接到的页面,有一个很好的链接指向 How to validate user credentials on Microsoft operating systems . 特别是,他们详细介绍了安全方面的一些内容:

    注释 从用户模式应用程序收集用户凭据对用户来说可能很烦人,并且可能在企业计算环境中提供一个可能的安全漏洞。统一登录要求(要求用户只需在ctrl+alt+del屏幕上键入一次凭据)由于这些原因被添加到Microsoft BackOffice徽标要求中。重要的是要确保您确实需要收集凭证,并且某些其他的客户机/服务器验证方法并不更合适。有关模拟和编程安全服务器的详细信息,请参阅Platform SDK中的安全文档。

    推荐文章