我正在构建一个WCF服务应用程序,每次客户端调用服务时都会抛出Windows安全事件4625(审核失败)。
对于我的服务,为了安全起见,我使用NetTcpBinding和以下配置:
var binding = new NetTcpBinding
{
MaxBufferSize = 5000000,
MaxReceivedMessageSize = 5000000,
ReaderQuotas = { MaxArrayLength = 5000000, MaxBytesPerRead = 5000000 }
};
binding.Security.Mode = SecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate;
binding.Security.Transport.ProtectionLevel = ProtectionLevel.EncryptAndSign;
构建此NetTcpBinding后,我有以下代码将此绑定包装在CustomBinding中,以便我可以分配自定义IdentityVerifier
var bindingElements = binding.CreateBindingElements();
var ssl = bindingElements.Find<SslStreamSecurityBindingElement>();
ssl.IdentityVerifier = new CustomEndpointIdentityVerifier(caCertificateThubprint);
return new CustomBinding(bindingElements);
这是根据MSDN http://msdn.microsoft.com/en-us/library/ms734778(v=vs.110).aspx
中的此示例完成的问题在于,当我返回此自定义绑定而不是我在第一步中创建的NetTcpBinding时,每次执行我的应用程序时,我都会遇到审计失败的窗口事件,其中的详细信息不多。 当我返回NetTcpBinding时,不会抛出这些安全事件。 使事件更有趣的原因是,当我在Active Directory域下的计算机上运行相同的代码时,会抛出这些事件,但如果我在不在域下的PC上运行它,则不会抛出事件。
是否有人可以提供帮助或提供任何提示?