c# - 通过 ASP.NET 访问 Active Directory 记录

标签 c# asp.net active-directory windows-authentication

似乎我的本地计算机没有将数据写入 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();
}

最佳答案

您的直觉是正确的 - 您需要对应用程序池帐户具有适当的权限。

最简单的方法是:

  1. 创建一个新的域用户帐户
  2. 将其添加到“域管理员”组
  3. 在您的 iis 服务器中,找到您的应用程序使用的池并将池标识更改为新创建的用户

这样,从用户到 iis 的所有请求都在域管理员的上下文中运行,因此从 iis 到 AD 的所有请求都会成功 - 域管理员可以操作 AD。

虽然上述解决方案可行,但可能不推荐。这是因为该应用程序除了连接到 AD 之外还会做很多事情,如果有可能被滥用的地方,您可能会在域管理上下文中运行不需要的请求。

通常这样的应用程序会有层,一个前层和一个后层。前端层在受限上下文中运行,负责所有用户请求。这是您的应用程序。后台层是另一个网络应用程序,它不能从互联网访问,只能从本地内部网访问。此应用程序在域管理上下文中运行,并充当 AD 的网关。前台应用程序使用后台应用程序与 AD 对话。

关于c# - 通过 ASP.NET 访问 Active Directory 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21966291/

相关文章:

azure - 如何限制/限制 Azure Active Directory 中的 CallRecords.read.all API 权限

asp.net - 如何更改 Google Recaptcha 宽度?

C# 事件目录 : Get domain name of user?

c# - 不使用 PrepareMethod 在运行时对代码进行预编译

c# - 从具有整数值的 jwt 有效负载解码编码的 JSON 字符串时,Convert.FromBase64string 抛出无效的 Base-64 异常

c# - CaSTLe Windsor 到 Unity - 你能像在 CW 中一样在 Unity 中自动配置吗?

c# - 防止字典中的对象修改

c# - Linq 按匹配数排序

.net - DateTime.ToString() 显示子午线为 "A.M."或 "P.M."

java - Java 中 Active Directory 查询的 LDAP 单点登录