Служба WCF с проблемой аутентификации пароля пользователя - PullRequest
1 голос
/ 23 марта 2011

Я пытаюсь защитить службу WCF с помощью https, имени пользователя и пароля. Я использую режим безопасности TransportWithMessageCredentials и wsHttpBinding. Прямо сейчас у меня проблемы с пользовательским UserNamePasswordValidator, когда я сравниваю жестко закодированные значения, подобные этому

if (userName == "user" && password == "pass")
    return;

все работает нормально, но когда я пытаюсь получить значения из базы данных, я получаю сообщение об ошибке

Необеспеченный или неправильно закрепленный вина была получена от другого вечеринка. Смотрите внутреннюю FaultException для кода неисправности и детализации

Вот мой раздел web.config

<bindings>
            <wsHttpBinding>
                <binding name="TestAuthConf" maxReceivedMessageSize="65536">
                    <security mode="TransportWithMessageCredential">
                        <message clientCredentialType="UserName"/>
                    </security>
                    <readerQuotas maxArrayLength="65536" maxBytesPerRead="65536" maxStringContentLength="65536"/>
                </binding>
            </wsHttpBinding>
        </bindings>
        <services>
            <service behaviorConfiguration="TestAuthWCFService.TestAuthBehavior" name="TestAuthLibrary.App_Code.TestAuth">
                <endpoint address="" binding="wsHttpBinding" bindingConfiguration="TestAuthConf" contract="TestAuthLibrary.App_Code.ITestAuth">
                    <identity>
                         <dns value="localhost" />
                    </identity>
                </endpoint>
                <endpoint address="mex" binding="mexHttpsBinding" contract="TestAuthLibrary.App_Code.ITestAuth"/>
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="TestAuthWCFService.TestAuthBehavior">
                    <serviceMetadata httpsGetEnabled="true"/>
                    <serviceDebug includeExceptionDetailInFaults="true"/>
                    <serviceCredentials>
                        <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="App_Code.CustomUserNameValidator, App_Code.CustomUserNameValidator"/>
                    </serviceCredentials>
                </behavior>
            </serviceBehaviors>
        </behaviors>

Я использую IIS7, самогенерируемый цифровой сертификат и настроил SSL для приема клиентских сертификатов ...

Любая помощь будет оценена ...

1 Ответ

1 голос
/ 23 марта 2011

Хорошая новость: если ваш пользовательский валидатор имени / пароля выполняется, сертификат был проверен, поэтому многие возможности там исключены.

Похоже, что есть ошибка при доступе к вашей базе данных из контекста потока WCF. Установите точку останова в вашем валидаторе и выполните шаг.

...