没有SSL和自定义身份验证类的WCF用户名和密码

时间:2016-06-27 18:26:17

标签: c# wcf authentication basic-authentication

我一般都是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");
        }
    }
}

我在堆栈溢出中发现了一些类似的问题,但是,我没有找到解决问题的任何解决方案。

谢谢,

0 个答案:

没有答案
相关问题