Я использую пользовательское средство проверки имени пользователя / пароля в WCF через 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();
Существует ли способ проверки учетных данных клиента на каждомзвонить или периодически?