ASP.NET MVC模拟以更新自广告属性
我使用ASP.NET MVC为Active Directory用户创建了一个web应用程序,以更新其用户属性/信息,如地址、联系人、经理等。 当我运行应用程序并在进行更改后调用CommitChanges()函数时,会收到一条错误消息“拒绝访问”。 当我使用服务帐户,并有权更新广告上的任何用户时,它工作正常 如果我为每个广告用户分配更新其自我信息的权限, 是否有某种方法可以使用登录用户的权限,允许他更新自己的属性,而不是创建具有更新所有用户权限的标识 我试过这样做ASP.NET MVC模拟以更新自广告属性,asp.net,asp.net-mvc,web-applications,active-directory,impersonation,Asp.net,Asp.net Mvc,Web Applications,Active Directory,Impersonation,我使用ASP.NET MVC为Active Directory用户创建了一个web应用程序,以更新其用户属性/信息,如地址、联系人、经理等。 当我运行应用程序并在进行更改后调用CommitChanges()函数时,会收到一条错误消息“拒绝访问”。 当我使用服务帐户,并有权更新广告上的任何用户时,它工作正常 如果我为每个广告用户分配更新其自我信息的权限, 是否有某种方法可以使用登录用户的权限,允许他更新自己的属性,而不是创建具有更新所有用户权限的标识 我试过这样做 using (WindowsId
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
你知道我应该做什么或者我做错了什么吗