asp.net模拟改变活动目录对象

时间:2012-12-14 02:17:42

标签: asp.net active-directory impersonation kerberos

所以这就是我想要找到解决方案的场景。

我的公司目前为其员工提供了记录系统,但它没有链接到活动目录。由于这个原因,我们有重复的,通常是不准确的数据。我正在尝试做什么允许记录系统更新活动目录中的值,但是我想要限制可以更改的内容和由谁。所以

  1. 当我们有新员工时,IT会输入初始记录,这也会创建AD用户。
  2. hr出现并更新标题/说明/电话/地址等,但他们不应该能够从系统创建或删除记录。 (他们必须提交一张票或其他东西)
  3. 我一直在努力阅读有关kerberos双跳问题,而且我似乎需要委派的能力,但是,我自己的IT能力还不够高。我可以升级并尝试从更高级别的IT人员那里获得签名,以便授权到一个帐户,但我将其作为最后的手段保存。

    我想使用模仿来完成任务,但我很难找到关于如何实施模仿的明确答案。

    我在web.config和iis中启用了模拟。我已将appPool标识设置为网络服务。之后,我迷失了下一步该做什么或如何测试设置。

    编辑1: 我也遵循这种模式进行冒充

    var iid = HttpContext.Current.User.Identity;
    WindowsIdentity wi = (WindowsIdentity)iid;
    WindowsImpersonationContext wic = wi.Impersonate();
    try
    {
        // do something with a directory entry here
    }
    catch
    {}
    finally
    {
        wic.Undo();
    }
    

2 个答案:

答案 0 :(得分:2)

确保您的Web服务器在AD中启用了委派。无论如何,这是我总是忘记的一步。

情侣参考链接:

http://blog.reveille.org.uk/2010/01/asp-net-impersonation-delegation/ http://support.microsoft.com/kb/810572?wa=wsignin1.0

另外,请确保您已在网站上使用Windows身份验证。

如果只有具有正确AD访问权限的用户能够操作AD设置,那么您将能够快速地说出它是否真的很快(因为它实际上就像他们自己更改AD一样)。

答案 1 :(得分:0)

代表团是一种更强大的模仿形式。模拟允许您充当本地计算机上的用户,委派允许您充当远程计算机上的用户。避免委派的唯一方法是将AD中的控制权委托给Web服务(在这种情况下,您将作为网络服务运行,因此为Web服务器的计算机帐户提供写入所需属性的能力),并拥有Web服务执行更新。但这不是一个好主意,因为您无法将更改归因于使用该网站的用户。