保护ASP.net财务应用程序中的WCF服务

时间:2014-07-20 10:21:35

标签: asp.net wcf asp.net-mvc-4 authentication

我有一个带有WCF服务的MVC4 ASP.net财务应用程序。目前的情况不够安全,我需要你提供帮助。

当前情况:

  1. 用户使用登录表单登录,并使用包含UserID和密码的JSON对象将其登录详细信息发送到WCF服务:

    http://example.com:22559/Login

    这将返回一个带有true或false的JSON对象。

  2. 如果这是真的,我使用ASP功能

    FormsAuthentication.SetAuthCookie(loginModel.UserID, loginModel.RememberMe);
    

    设置授权Cookie以便以后使用。

  3. 当用户添加新的交易时,我发送一个JSON对象,其中包含交易详情 ,无需密码

    http://example.com:22559/AddTransaction

    我在这里依赖MVC控制器如果他没有登录就不允许用户访问交易页面。


  4. 问题是任何人现在都可以偷偷摸摸并添加交易而无需输入密码!,使用网址:

    http://example.com:22559/AddTransaction

    我现在需要做的是让WCF服务本身安全,但我不知道如何做到这一点,而不是让用户每次添加新的交易时输入他的用户名和密码! ,这样做的正确方法是什么?

    提前致谢。

1 个答案:

答案 0 :(得分:0)

MVC 4的控制器通常使用 MemberShipProvider 进行身份验证,使用 RoleProvider 进行授权。因此,您的WCF服务可能共享提供者。

对于身份验证,您不需要在WCF代码中执行任何操作。对于授权,使用PrincipalPermissionAttribute修改相应的操作实现函数(不是接口)并定义Role角色是很方便的。其余的将在配置和运行时完成。

有关详细信息,只需搜索" membershipprovider wcf",您将在MSDN,CodeProject和StackOverflow中找到很多文章/教程。

请注意,在MVC 5中,如果您将转向MVC5,默认情况下会使用Identity 2.0,而默认情况下,MembershipProvider和RoleProvider将不会是它们。尽管如此,您的WCF代码应保持不变,只有ServiceModel下的某些元素需要调整新的自定义身份验证和授权,客户端代码也应保持不变,无需更改配置。