我希望为网络服务提供安全保障。我最初使用BasicHttpBinding与传输安全性(ssl)和消息安全性(传递自定义用户名密码验证的用户名和密码)...
但网络服务的消费者表示,他们无法在肥皂邮件中添加一个带有安全详细信息的标题..并表示他们希望在服务的通信渠道上传递它。
是否可以使用WCF进行传输安全性的用户自定义验证?我无法让它发挥作用:(
有什么建议吗?
感谢 尼尔
答案 0 :(得分:3)
我认为您的消费者要求进行基本身份验证。也就是说,身份验证令牌在HTTP Authorization标头中而不是在SOAP安全标头中传递。凭证的机密性仅由传输(HTTPS)提供。
此绑定配置为:
<basicHttpBinding>
<binding name="HTTPSwithBasicAuthentication">
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
</binding>
</basicHttpBinding>
在客户端上,您可以像这样设置凭据
serviceClient.ClientCredentials.UserName.UserName = "username";
serviceClient.ClientCredentials.UserName.Password = "password";
假设您的服务托管在IIS中,请记住在IIS配置中启用基本身份验证。
要对用户进行实际授权,您可以实现自定义ServiceAuthorizationManager
以包含授权逻辑。有很多关于如何在网络上做最后一部分的例子。
或者,如果适合您的应用程序,您可以在标准ASP.Net成员资格提供程序中进行配置。
http://msdn.microsoft.com/en-us/library/bb398990(VS.100).aspx