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

ASP。NET Windows身份验证模拟问题

  •  2
  • Phil  · 技术社区  · 17 年前

    在我之前的问题中,我问的是如何在我的应用程序中使用windows身份验证。现在这是可行的,用户可以使用那里的帐户登录,但我有一个数据库访问场景,我找不到任何内容。

    基本上我会有几个服务器,这就是问题所在。

    我怎样才能做到这一点?

    3 回复  |  直到 17 年前
        1
  •  6
  •   blowdart    17 年前

    模拟是在整个网站范围内进行的,或者你可以手动打开它。恐怕你不能手动关闭它,也不能通过连接字符串完成。

    因此,基本上关闭模拟,然后在需要模拟时包装数据库调用,如下所示:

    using System.Security.Principal;
    
    WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity;
    WindowsImpersonationContext ctx = null;
    try
    {
        ctx = winId.Impersonate();
        // Do your thing
    }
    catch
    {
    }
    finally
    {
        if (ctx != null)
            ctx.Undo();
    }
    

    这 MSDN P&P guide to asp.net impersonation 有更多。

        2
  •  2
  •   user1228 user1228    17 年前

    您必须在网络上设置委派,以便ASP。NET服务器可以模拟Sql服务器计算机上的用户。这假设您的服务器位于Active Directory控制的网络上(不是工作组),并且sql服务器与web服务器位于不同的计算机上。

    如果无法做到这一点,可以在要阻止委派的Sql Server实例上关闭windows/混合身份验证,然后在web.config中的连接字符串中手动配置要连接的Sql Server帐户。

        3
  •  0
  •   Dewfy    17 年前