我一般都是WCF和安全新手。 我试图在WCF中实现基本身份验证,而不使用SSL并使用自定义类(通过继承类UserNamePasswordValidator)来验证用户名和密码。我不想使用证书,事实上,我需要的是,我只需要发送用户名和密码而不加密。
当我尝试配置我的WCF服务时(基于此[link](http://developers.de/blogs/damir_dobric/archive/2006/07/31/890.aspx" link")),通过将凭据类型的安全模式设置为" TransportCredentialOnly& #34;并且绑定类型为" basicHttpBinding",在尝试在控制台应用程序测试中使用此服务后,身份验证不起作用(实际上,我在身份验证类中放置了一个断点,它永远不会停止有)。
这就是我的Web.Config的样子
<bindings>
<basicHttpBinding>
<binding name="BeneficiarioServiceBasicBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="None" proxyCredentialType="None" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour.BeneficiarioService" >
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="WCF.Configuration.ServicoAutenticacao, ProgramasSociais.WCF" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
身份验证类(只是一个测试类)
public class ServicoAutenticacao : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if (userName != "Test" && password != "Test")
{
throw new FaultException("Invalid user and/or password");
}
}
}
我在堆栈溢出中发现了一些类似的问题,但是,我没有找到解决问题的任何解决方案。
谢谢,