网络服务应用程序池身份拒绝访问以从 AD 中的组中删除用户

Network Service App Pool Identity Denied Access to Remove users from group in AD

当我将我的应用程序发布到我的网络服务器时。在 IIS 管理器中,我为我正在使用的应用程序池提供了 Network Service.

的标识

在我的应用程序中,我为来自特定 Active Directory 组的 remove/add 用户提供了功能。这是代码:

public static void RemoveUserFromGroup(string userId, string groupName)
{
    try
    {
        using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "myDomain"))
        {
            GroupPrincipal group = GroupPrincipal.FindByIdentity(pc, groupName);
            group.Members.Remove(pc, IdentityType.UserPrincipalName, userId);
            group.Save();
        }
    }
    catch (Exception E)
    {
        throw E;

    }
}

这在我测试本地时有效,因为我的帐户在处理 AD 时具有管理员权限。所以只是为了检查,在页面加载时我通过这样做记录 Windows 用户名:

var thread = '@System.Security.Principal.WindowsIdentity.GetCurrent().Name';
console.log(thread);

这导致 NT AUTHORITYNETWORK SERVICE。但是当我尝试从 AD 组中删除用户时.. 我得到:

Access is denied

如何授予 Network Service 执行此操作的权限?或者有其他方法可以做到这一点吗?

"NT AUTHORITY\Network Service" 是一个内置的 机器级别 Windows 帐户,它被各种各样的进程使用,而不仅仅是 IIS(加载服务控制面板(开始 > 运行 > "services.msc")并查看 "Log On As" 列。您将在该标识下看到几个 Windows 组件 运行ning . 因此,您不应更改帐户的权限和权利 - 您可能无法这样做!

您可以做的是创建一个具有适当权限的域用户,并将应用程序池配置为具有该身份的 运行。或者,看起来 constructors for PrincipalContext 之一允许指定用户名和密码,尽管这意味着您需要自己将用户名和密码存储在某个地方。