我有一个带有WCF服务的MVC4 ASP.net财务应用程序。目前的情况不够安全,我需要你提供帮助。
当前情况:
用户使用登录表单登录,并使用包含UserID和密码的JSON对象将其登录详细信息发送到WCF服务:
http://example.com:22559/Login
这将返回一个带有true或false的JSON对象。
如果这是真的,我使用ASP功能
FormsAuthentication.SetAuthCookie(loginModel.UserID, loginModel.RememberMe);
设置授权Cookie以便以后使用。
当用户添加新的交易时,我发送一个JSON对象,其中包含交易详情 ,无需密码 :
http://example.com:22559/AddTransaction
我在这里依赖MVC控制器如果他没有登录就不允许用户访问交易页面。
问题是任何人现在都可以偷偷摸摸并添加交易而无需输入密码!,使用网址:
http://example.com:22559/AddTransaction
我现在需要做的是让WCF服务本身安全,但我不知道如何做到这一点,而不是让用户每次添加新的交易时输入他的用户名和密码! ,这样做的正确方法是什么?
提前致谢。
答案 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下的某些元素需要调整新的自定义身份验证和授权,客户端代码也应保持不变,无需更改配置。