我有一个在服务器 (Windows server 2012) 上运行的应用程序,该应用程序对计算机 (Windows 10) 上运行的另一个应用程序进行 wcf 调用。
每次运行应用程序的用户不是域管理员的成员时,wcf 调用都会失败并出现此错误:
(内部异常 #0)System.ServiceModel.Security.SecurityNegotiationException:服务器已拒绝客户端凭据。 ---> System.Security.Authentication.InvalidCredentialException:服务器已拒绝客户端凭据。 ---> System.ComponentModel.Win32Exception:登录尝试失败 --- 内部异常堆栈跟踪结束 --- 在 System.Net.Security.NegoState.ProcessReceivedBlob(Byte[] 消息,LazyAsyncResult lazyResult) 在 System.Net.Security.NegoState.StartSendBlob(Byte[] 消息,LazyAsyncResult lazyResult) 在 System.Net.Security.NegoState.ProcessAuthentication(LazyAsyncResult 惰性结果) 在 System.Net.Security.NegotiateStream.AuthenticateAsClient(NetworkCredential 凭证,字符串 targetName,保护级别 requiredProtectionLevel,TokenImpersonationLevel allowedImpersonationLevel) 在System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider.WindowsStreamSecurityUpgradeInitiator.OnInitiateUpgrade(流流,SecurityMessageProperty&remoteSecurity)
当我将用户添加到域管理员组中时,一切正常。
我错过了什么吗?是否有我不知道的安全规则?
预先感谢您的专业知识。
我找到问题所在了。有人配置了 GPO 来限制可以从网络访问计算机的组数量。 只有管理员可以访问这台计算机。
为了解决这个问题,我仅为正确的用户创建了一个组,并将该组添加到我需要访问的计算机的 GPO 中。