我们正在.net 4.0上使用WCF构建Web服务。该服务将主要由ASP.net MVC前端使用,但也将由.net Windows应用程序使用。
由于我们不想保存用户凭据,因此提供的基本用户名/密码auth不会执行,因此我考虑使用RNGCryptoServiceProvider进行一次身份验证并创建一个简单的令牌(或者我应该将其称为cookie?)。 GetBytes()然后使用它来验证进一步的请求。
我已经研究了使用WCF进行安全性的各种常用方法,它们看起来过于复杂,特别是当我们想要做的只是将cookie传递给每个方法调用时。
将此cookie从WCF客户端传递给我们的WCF服务的最佳策略是什么?首选方法将尽可能与WCF的安全架构紧密结合。
到目前为止,我一直在使用custom HTTP headers或custom authorization,但我不相信哪种方法更合适。
请记住,对于ASP网站,将为每个请求创建一个新频道,而它将在Windows应用上重复使用。
答案 0 :(得分:3)
IMO有两种方法可以做wcf安全,传输或消息传输。
您可以在应用程序中实现用户名类型身份验证。因此,客户端必须填写用于发送消息的用户名和密码。 所以客户端的绑定看起来像
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName"/>
</security>
在服务器端,您可以实现自己的密码验证程序,如example
所示执行此操作将在服务器上验证您的消息,您可以实现您想要的任何密码验证逻辑。使用此消息将使用ssl加密,并使用您在服务端实现的逻辑进行身份验证。