似乎我的本地计算机没有将数据写入 Active Directory 所需的权限。我可以读取数据但不能更改和更新它。调用 .save() 命令后,我收到下一条消息:“访问被拒绝”。
我不使用任何登录详细信息来登录 Active Directory,我也不希望使用任何详细信息。我知道它通常与应用程序池和 IIS 有关,但除了尝试和更改一些次要选项和功能之外,我似乎找不到可行的解决方案。
编辑: 这是我要执行的代码:
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "DOMAINANME"))
{
GroupPrincipal group = new GroupPrincipal.FindByIdentity(pc, "GROUPNAME");
group.Members.Remove(pc, IdentityType.SamAccountName, "USERNAME");
group.Save();
}
最佳答案
您的直觉是正确的 - 您需要对应用程序池帐户具有适当的权限。
最简单的方法是:
- 创建一个新的域用户帐户
- 将其添加到“域管理员”组
- 在您的 iis 服务器中,找到您的应用程序使用的池并将池标识更改为新创建的用户
这样,从用户到 iis 的所有请求都在域管理员的上下文中运行,因此从 iis 到 AD 的所有请求都会成功 - 域管理员可以操作 AD。
虽然上述解决方案可行,但可能不推荐。这是因为该应用程序除了连接到 AD 之外还会做很多事情,如果有可能被滥用的地方,您可能会在域管理上下文中运行不需要的请求。
通常这样的应用程序会有两层,一个前层和一个后层。前端层在受限上下文中运行,负责所有用户请求。这是您的应用程序。后台层是另一个网络应用程序,它不能从互联网访问,只能从本地内部网访问。此应用程序在域管理上下文中运行,并充当 AD 的网关。前台应用程序使用后台应用程序与 AD 对话。
关于c# - 通过 ASP.NET 访问 Active Directory 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21966291/