httpBasicBinding具有身份验证,没有消息或传输安全性

时间:2016-07-21 06:46:55

标签: c# wcf

我在Intranet中有一个小的WCF服务,我需要在其中实现身份验证。此服务通过http与不同的Java客户端通信(使用basicHttpBinding)。我试图像这样配置绑定

   <basicHttpBinding>
    <binding>
      <security mode="None">
        <message clientCredentialType="UserName"/>
      </security>
    </binding>
  </basicHttpBinding>

并增加了服务行为

    <behavior>
      <serviceMetadata httpGetEnabled="true"/>
      <serviceCredentials>
        <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="LocalTasks.Services.Validators.IntegrationUserNameValidator,LocalTasks.Services"/>
      </serviceCredentials>
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>

但是对此服务的调用没有点击我的自定义UserNamePassword验证器。 我也尝试了相同的变体,但安全模式设置为Message并添加了证书。在这种情况下,验证器工作正常。

如何配置服务以通过basicHttpBinding对用户进行身份验证而不需要任何消息或传输安全性?

1 个答案:

答案 0 :(得分:1)

你做不到。您需要消息或传输安全性,以便在从客户端传输到服务器时对凭据进行加密。

你真的应该使用消息或传输安全性。

您也可以使用TransportCredentialOnly,这不需要SSL证书,但建议仅用于测试。

<basicHttpBinding>
  <binding name="Authentication" >
    <security mode="TransportCredentialOnly" >
      <message clientCredentialType="UserName"/>
    </security>
  </binding>
</basicHttpBinding>