网络服务应用程序池身份拒绝访问以从 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
之一允许指定用户名和密码,尽管这意味着您需要自己将用户名和密码存储在某个地方。
当我将我的应用程序发布到我的网络服务器时。在 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
之一允许指定用户名和密码,尽管这意味着您需要自己将用户名和密码存储在某个地方。