问题描述
我已经使用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 (将#修改为@)