作为网络服务/本地系统运行的服务:无法向ActiveDirectoryContainer添加条目(DirectoryOperationException:No Permissions)

时间:2014-01-06 05:17:54

标签: c# .net windows security active-directory

我有两个Windows服务(一个作为网络服务运行,另一个作为本地系统运行)。运行这些服务的系统是域的一部分。这些服务使用活动目录作为中央存储,并且想法是能够从该存储添加/删除/读取条目。

我们只是使用System.DirectoryServices.Protocols.LdapConnection.BeginSendRequest(DirectoryRequest request .... http://msdn.microsoft.com/en-us/library/system.directoryservices.protocols.ldapconnection.beginsendrequest(v=vs.110).aspx)并将AddReuest作为输入传递给Active Directory添加条目。

但是,使用System.DirectoryServices.Protocols进行操作失败。 DirectoryOperationException ,带有消息用户访问权限不足(网络服务和计算机都出现相同的错误/本地系统帐户)。但我确实将计算机帐户添加到Active Directory中的商店并授予商店的完全权限。我不确定我错过了什么?

即使计算机帐户已授予完全权限,是否无法在Active Directory上添加/删除条目? (我认为本地系统/网络服务只是通过网络传递计算机凭证 - 我已快速浏览以下链接以供参考The difference between the 'Local System' account and the 'Network Service' account?http://technet.microsoft.com/en-us/library/bb680595.aspx

顺便说一句,请注意,只要我使用域用户帐户之一运行服务,操作就会通过。并且搜索(读取操作)正在为所有帐户传递。

任何建议都表示赞赏:)

问候!

2 个答案:

答案 0 :(得分:1)

虽然我还不确定它是否会有所帮助,但我会把它作为答案而不是评论。

当接近这样的权限问题时,我倾向于考虑集合。我首先查看提供给您的两个不同测试用例的成员资格集,机器帐户和服务帐户,其中包含此处描述的PowerShell脚本:https://stackoverflow.com/a/20410668/44656

您的服务帐户可能通过您的计算机帐户没有的间接成员资格授予权限。

如果这没有说明它,您可以尝试在ActiveDirectory服务器上启用审核并查找失败的访问尝试。通常,失败的权限检查可以很好地突出显示某些内容被拒绝的原因。可以通过全局审计策略配置审计,并在您感兴趣的特定对象上设置SACL。

答案 1 :(得分:1)

您可能误认为授权问题存在身份验证问题。当然,当没有任何作用时,很难区分它们。

你在AD中设置的权利可能没问题,但你永远不会到达那里。在承载Active Directory的计算机的安全事件日志中,可能存在拒绝访问\\server_a的网络登录的访问权限。在Active Directory服务器上,为计算机帐户(SERVER_A)提供“从网络访问此计算机”权限。

它将解决身份验证部分,让进程获取将由Active Directory用于执行授权的访问令牌。

如果您在小批量实验室中,您还可以尝试使用Security Events注册表项启用Active Directory Diagnostic Logging