2011-01-27 195 views
9

我的场景是3层应用程序,其中数据层是SQL Server数据库,中间层是WCF应用程序,托管在Windows服务中,最后演示文稿是Asp.Net MVC应用程序。WCF/ASP.NET身份验证

像往常一样,中间层是执行所有业务逻辑的层。访问数据库,定义业务规则等。

好吧,到目前为止好!但现在问题是:在这种情况下你如何处理安全问题?我的意思是,用户必须登录ASP.NET应用程序,但我不仅要在ASP中对其进行身份验证,还要在WCF中间层进行身份验证,因为WCF服务应该可以被更多应用程序访问。

我想让用户登录到Asp.Net应用程序,并让WCF知道凭据。 WCF中是否有某种会话用于指定登录用户?

专业人员在这种情况下如何处理安全问题?我知道你可以通过消息安全保护WCF服务,但Asp.Net和WCF如何在单个登录用户上同步?我想确保WCF操作取决于用户的授权手段。

+0

这是一个太大的问题需要处理 - 它需要在WCF培训套件50页。建议你从一些研究开始,然后发布你有任何具体问题 - http://mscerts.net/programming/user-level%20security%20%20%20authorization%20and%20impersonation%20%28part%201%29%20 - %20authorization.aspx – 2011-01-27 05:50:44

回答

2

我会建议寻找到像使用HMAC(散列消息认证码)的方式为您的安全,或类似的基于令牌的方法。这个想法是为你的WCF层签名,它可以用来验证请求并识别发出请求的用户。

基本元素将是一种令牌和用于签署每个请求的某种共享秘密。该令牌将允许您在WCF端识别用户,并查找共享密钥以验证请求。您还可以添加时间戳/随机数以防止重放攻击等。

对于构建在WCF上的一些REST服务,我已经使用了这种方法 - 客户端不需要存储用户名和密码,只是用于通信的安全令牌。在你的情况下,你需要理清如何交换ASP.NET层和WCF层之间的令牌,但是它会为你的WCF服务的任何使用者提供一个统一的认证方法。