我上下看了看,似乎找不到一种方法来让一个简单的 WCF 服务(使用basicHttpBinding
或wsHttpBinding
)针对这种配置进行身份验证:
<authentication mode="Forms">
<forms cookieless="UseCookies">
<credentials passwordFormat="Clear">
<user name="test" password="pass"/>
</credentials>
</forms>
</authentication>
基本上,我想硬编码一个简单的用户/通行证(不要问为什么),并确保我的 WCF 服务使用它。
在客户端我有这个:
client.ClientCredentials.UserName.UserName = "test";
client.ClientCredentials.UserName.Password = "pass";
但是凭证似乎没有被传递。HttpContext.Current.User.Identity
永远不会在 WCF 端进行身份验证。
我尝试使用以下设置尝试使用无、传输、消息中的所有内容......但None
似乎只让服务运行(但没有发送/使用凭据)。其他设置似乎需要 X509 证书(正如我在这个很好的示例中发现的那样)。
<wsHttpBinding>
<binding name="userHttp">
<security mode="None">
<message clientCredentialType="UserName"/>
</security>
</binding>
</wsHttpBinding>
所以,总而言之...我想创建一个非常简单的 WCF 服务(通过 HTTP 运行,而不是 HTTPS),它具有更简单的纯文本用户名/密码身份验证。应该是可能的,但我已经迷路了。最好的解决方案涉及尊重<user />
条目,但我会对任何其他简单的实现感到满意。它不需要使用cookies。就我而言,它也可以在每个服务方法调用上发送用户名/密码。