1

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

但是 Web 服务的消费者说他们不能在带有安全细节的 soap 消息中添加一个标题......并表示他们希望将它传递到服务的通信通道上。

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

有什么建议么?

谢谢尼尔

4

1 回答 1

3

我认为您的消费者要求基本身份验证。也就是说,身份验证令牌在 HTTP 授权标头中而不是在 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

于 2013-06-27T17:54:53.217 回答