这个问题已被问过几次,但到目前为止我还没有看到一个看起来像我们问题的答案。
首先,我们有两个重复的环境。两者都运行带有Active Directory的Windows 2012 R2服务器,以便与我们的Active Directory联合服务一起使用。
我们的系统包含一个通过WCF服务进行通信的Web门户。从这里我们有一个安全WCF服务,允许我们创建新的AD帐户。这当前在我们的开发和测试机器上完美地工作(虽然这些使用相同的AD和ADFS机器),但是在我们的生产环境中,当我们调用相同的函数来创建新用户时,我们得到以下错误:
02:07:24 [17] ERROR UserService !!!错误!!! System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---> System.UnauthorizedAccessException:拒绝访问。 (HRESULT异常:0x80070005(E_ACCESSDENIED)) ---内部异常堆栈跟踪结束--- 在System.DirectoryServices.DirectoryEntry.Invoke(String methodName,Object [] args) 在System.DirectoryServices.AccountManagement.SDSUtils.SetPassword(DirectoryEntry de,String newPassword) 在System.DirectoryServices.AccountManagement.ADStoreCtx.SetPassword(AuthenticablePrincipal p,String newPassword) at System.DirectoryServices.AccountManagement.SDSUtils.InsertPrincipal(Principal p,StoreCtx storeCtx,GroupMembershipUpdater updateGroupMembership,NetCred credentials,AuthenticationTypes authTypes,Boolean needToSetPassword) 在System.DirectoryServices.AccountManagement.ADStoreCtx.Insert(Principal p) 在System.DirectoryServices.AccountManagement.Principal.Save() at UserService.Implementation.LDAPManager.CreateUser(String logon,String firstName,String lastName,String userPassword,String EmailAddress)在e:\ Bld \ 1 \ User Service \ UserService \ Implementation \ LDAPManager.cs:第60行 在e:\ Bld \ 1 \ User Service \ UserService \ UserService.cs中的UserService.createNewUser(NewUserValueObject newUser):第127行
正如我所说的那样,我们已经看过AD方面并且找不到任何明显的东西,但我相信你很有意思,并且开发人员会很快告诉我。
答案 0 :(得分:0)
您需要检查服务运行的帐户及其权限。我最近遇到了类似的问题,尝试将服务作为组管理服务帐户运行,并且服务帐户无权访问域中的计算机。必须委派对组管理服务帐户的控制安全组的访问权限。
以下文章是一个非常好的参考:
https://richardstk.com/2013/11/29/create-a-dedicated-account-to-join-computers-to-a-domain/
为了避免为我需要管理各种OU的服务帐户创建SPN,我只是将它们放入自己的安全组中,并根据安全组委派访问权限。里程可能会有所不同,具体取决于您的情况以及您是否使用服务帐户来运行您的服务。