Custom валидация сертификатов на WCF под IIS
От: barrabas  
Дата: 26.11.10 08:02
Оценка:
Сервис хостится в IIS на WS2008
Почему валидатор зацикливается?
Т.е. при ексепшине снова вызывается Validate, а не отправляется "отлуп" юзеру?
я уже разные типы ексепшинов пробовал и SecurityTokenValidationException и FaultException. Юзер получает отказ только через тайаут.



public class GsX509CertificateValidator : X509CertificateValidator
{
    public GsX509CertificateValidator()
    {
      
    }
 
    public override void Validate(X509Certificate2 certificate)
    {           
            throw new  ArgumentNullException("Клиентский сертификат не был предъявлен сервису");
    }
}




В отладчике видно что ошибка генерится причем за одно обращение пользователя метод вызывается 6 раз.
Но пользователь волучает не её а просто ошибка таймайта на сокете.
Как быть, нужна именно кастомная валидация

Сама валидация работает, если сертификат предявлен и я его пропускаю (не генерю ексепшин), то юзер заходит, но как корректно давать разворот пользователю, чтобы он не ждал таймаута


Сообщение выглядит так:
####
Подключение к сокету было прервано. Возможно, это вызвано ошибкой обработки сообщения,
превышением времени ожидания на удаленном узле или проблемой с выделенным сетевым ресурсом.
Тайм-аут локального сокета: "00:00:09.9690000".
####
Re: Custom валидация сертификатов на WCF под IIS
От: barrabas  
Дата: 30.12.10 06:00
Оценка:
Похоже дело в IIS и net.tcp, так как попробовал "простую" (<authentication certificateValidationMode="PeerTrust" trustedStoreLocation="LocalMachine" />) валидацию, та же фигня (если сертификат подходит то пускает, если нет то висит до таймаута). Только не понятно, это в IIS чегото не доделано или я в настройках не разобрался (хотя весь уже перерыл)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.