我在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对用户进行身份验证而不需要任何消息或传输安全性?
答案 0 :(得分:1)
你做不到。您需要消息或传输安全性,以便在从客户端传输到服务器时对凭据进行加密。
你真的应该使用消息或传输安全性。
您也可以使用TransportCredentialOnly
,这不需要SSL证书,但建议仅用于测试。
<basicHttpBinding>
<binding name="Authentication" >
<security mode="TransportCredentialOnly" >
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>