WCF安全性 - 使用用户名密码的传输级别安全性

时间:2013-06-27 15:59:15

标签: c# wcf wcf-binding wcf-security

我希望为网络服务提供安全保障。我最初使用BasicHttpBinding与传输安全性(ssl)和消息安全性(传递自定义用户名密码验证的用户名和密码)...

但网络服务的消费者表示,他们无法在肥皂邮件中添加一个带有安全详细信息的标题..并表示他们希望在服务的通信渠道上传递它。

是否可以使用WCF进行传输安全性的用户自定义验证?我无法让它发挥作用:(

有什么建议吗?

感谢 尼尔

1 个答案:

答案 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