【发布时间】:2019-10-21 04:43:00
【问题描述】:
我在 WCF over NetTcp 上使用自定义用户名/密码验证器来验证连接到我的 WCF 服务的客户端。我注意到的是,一旦客户端通过身份验证,就再也不会被验证,这意味着如果我想撤销客户端的访问权限,我需要手动强制他断开连接。
我的 serviceHost 配置如下所示:
_serviceHost.Description.Behaviors.Add(credentialsBehavior);
_serviceHost.Credentials.UserNameAuthentication.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom;
_serviceHost.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = _userValidator;
_serviceHost.Credentials.ClientCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
_serviceHost.Credentials.ServiceCertificate.SetCertificate(AppSettingsManager.I.CertificateStoreLocation, AppSettingsManager.I.CertificateStoreName, AppSettingsManager.I.CertificateFindBy, AppSettingsManager.I.CertificateFindValue);
我的客户使用 ChannelFactory 进行连接:
var client = new DuplexChannelFactory<T>(new InstanceContext(this), binding, endpointAddress);
client.Credentials.UserName.UserName = ConnectionProperties.Authentication.Credentials.Username;
client.Credentials.UserName.Password = ConnectionProperties.Authentication.Credentials.Password;
client.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = AppSettingsManager.I.CertificateValidationMode;
client.CreateChannel();
有没有办法在每次通话时或定期验证客户端凭据?
【问题讨论】:
标签: c# wcf authentication