我正在尝试使用https和用户名&amp ;;来保护WCF服务密码。我正在使用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以接受客户端证书......
任何帮助都会得到满足......
答案 0 :(得分:1)
好消息:如果您的自定义用户名/密码验证程序正在执行,则证书已经过验证,因此可以消除很多可能性。
听起来像在WCF的线程上下文中存在从数据库访问数据库的错误。在验证器中设置断点并逐步完成。