将令牌/ cookie传递给WCF服务的最佳策略?

时间:2011-11-22 14:02:48

标签: c# asp.net wcf rest wcf-security

我们正在.net 4.0上使用WCF构建Web服务。该服务将主要由ASP.net MVC前端使用,但也将由.net Windows应用程序使用。

由于我们不想保存用户凭据,因此提供的基本用户名/密码auth不会执行,因此我考虑使用RNGCryptoServiceProvider进行一次身份验证并创建一个简单的令牌(或者我应该将其称为cookie?)。 GetBytes()然后使用它来验证进一步的请求。

我已经研究了使用WCF进行安全性的各种常用方法,它们看起来过于复杂,特别是当我们想要做的只是将cookie传递给每个方法调用时。

将此cookie从WCF客户端传递给我们的WCF服务的最佳策略是什么?首选方法将尽可能与WCF的安全架构紧密结合。

到目前为止,我一直在使用custom HTTP headerscustom authorization,但我不相信哪种方法更合适。

请记住,对于ASP网站,将为每个请求创建一个新频道,而它将在Windows应用上重复使用。

1 个答案:

答案 0 :(得分:3)

IMO有两种方法可以做wcf安全,传输或消息传输。

您可以在应用程序中实现用户名类型身份验证。因此,客户端必须填写用于发送消息的用户名和密码。 所以客户端的绑定看起来像

<security mode="TransportWithMessageCredential"> 
   <message clientCredentialType="UserName"/>
</security>

在服务器端,您可以实现自己的密码验证程序,如example

所示

执行此操作将在服务器上验证您的消息,您可以实现您想要的任何密码验证逻辑。使用此消息将使用ssl加密,并使用您在服务端实现的逻辑进行身份验证。