ASP.NET MVC模仿更新自我AD属性

问题描述

我已经使用ASP.NET MVC为Active Directory用户创建了一个Web应用程序,以更新其用户属性/信息,例如地址,联系人,管理员等。 当我运行应用程序并进行更改后调用CommitChanges()函数时,我收到一条错误消息“访问被拒绝”。 当我使用服务帐户并有权更新AD上的任何用户时,它可以正常工作。

如果我授予每个AD用户更新其自身信息的权限, 有什么方法可以使用登录用户的权限,并允许他更新自己的属性,而不是创建具有访问所有用户权限的身份?

我尝试这样做。

using (WindowsIdentity.GetCurrent().Impersonate())
{       
    var domain = Utility.DOMAIN.Split('.');
    string LDAP = "LDAP://DC=" + domain[0] + ",DC=" + domain[1];
    DirectoryEntry searchRoot = new DirectoryEntry(LDAP);
    DirectorySearcher directorySearch = new DirectorySearcher(searchRoot);
    directorySearch.Filter = "(&(objectClass=user)(SAMAccountName=" + UserName + "))";
    foreach (var item in Attributes)
    {
        directorySearch.PropertiesToLoad.Add(item);
    }
    directorySearch.SearchScope = System.DirectoryServices.SearchScope.Subtree;
    SearchResult result = directorySearch.FindOne();
    if (result != null)
    {
        DirectoryEntry user = result.GetDirectoryEntry();
        if (usrProfile.Mobile!=null && usrProfile.Mobile!="")
        {
            user.Properties["mobile"].Value = usrProfile.Mobile;
        }
        // Other attributes here.....
        if (usrProfile.TelephoneNumber != null && usrProfile.TelephoneNumber != "")
        {
            user.Properties["telephoneNumber"].Value = usrProfile.TelephoneNumber;
        }
        user.CommitChanges();
    }
}

但是当我尝试运行CommitChanges()时出现错误“访问被拒绝”;

我也尝试过模拟登录用户,但是在那种情况下,我无法连接到Active Directory。

I get the error 
message : "An operations error occurred."
TargetSite : Void Bind(Boolean)
Source : System.DirectoryServices
StackTrace :    at System.DirectoryServices.DirectoryEntry.Bind 

关于应该做什么或做错什么的任何想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)