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

时间:2017-07-27 17:19:54

标签: c# asp.net-mvc-5 active-directory network-service

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

的标识

在我的应用程序中,我提供了从特定Active Directory组中删除/添加用户的功能。这是代码:

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组中删除用户时......我得到了:

  

访问被拒绝

如何授予Network Service访问权限?或者有另一种方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:1)

" NT AUTHORITY \ Network Service"是一个内置的计算机级别 Windows帐户,它被各种进程使用,而不仅仅是IIS(加载服务控制面板(开始>运行>" services.msc&# 34;)并查看"登录为"列。您将看到以此身份运行的多个Windows组件。因此,您不应该更改权限和权限帐户 - 您可能无法这样做!

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