我希望为 Web 服务提供安全性。我最初使用具有传输安全性 (ssl) 和消息安全性的 BasicHttpBinding(为自定义用户名密码验证传递用户名和密码)...
但是 Web 服务的消费者说他们不能在带有安全细节的 soap 消息中添加一个标题......并表示他们希望将它传递到服务的通信通道上。
是否可以通过 WCF 的传输安全性对用户进行自定义验证?我无法让它工作:(
有什么建议么?
谢谢尼尔
我希望为 Web 服务提供安全性。我最初使用具有传输安全性 (ssl) 和消息安全性的 BasicHttpBinding(为自定义用户名密码验证传递用户名和密码)...
但是 Web 服务的消费者说他们不能在带有安全细节的 soap 消息中添加一个标题......并表示他们希望将它传递到服务的通信通道上。
是否可以通过 WCF 的传输安全性对用户进行自定义验证?我无法让它工作:(
有什么建议么?
谢谢尼尔
我认为您的消费者要求基本身份验证。也就是说,身份验证令牌在 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