我们的一位架构师正在为我们公司的下一代应用程序构建一个新的参考架构。原型是一个WCFMVC2 web应用程序,它位于ASP.NET数据服务(Astoria)之上,并使用EntityFramework 4进行数据访问和对象映射。
原型应用程序管理用户的角色,因此服务执行诸如创建/更新/删除用户、向用户添加应用程序访问/功能/角色等操作。因此,从安全的角度来看,应该没有人能够访问应用程序外部的数据服务并执行任何这些操作。
我最初认为WCF Data Services是为OData实现和web上的“开放”服务而设计的,业务线应用程序仍然应该使用传统的WCF服务来实现它们的适应性、安全性和其他特性。我是不是太离谱了?从MVC控制器调用WCF数据服务是一个很好的选择吗?它们是否可以像传统的WCF服务一样轻松地处理身份验证和安全性之类的事情?
发布于 2010-08-02 22:39:26
更新:
新的问题基本上是“WCF数据服务能否限制访问?”,是的。
这些问题很难回答,因为您还没有发布您的需求、SLA或安全需求。WCF Data Services适用于我的LoB,但可能不适用于您的,这取决于您尚未发布的各种详细信息。
的两个想法:
1) WCF数据服务仅限于REST,并且没有与手动WCF服务相同的选项安全性。你非得像克里姆林宫那样封锁一切吗?WCF数据服务可能不是你喜欢的。
2) WCF数据服务非常适合于只读的,“从产品中选择前50 *”类型的服务方法。通常,您必须为应用程序的每个实体类型编写几个WCF服务方法。通过在普通的WCF服务之上利用WCF数据服务,您可以一遍又一遍地编写相同的读取方法,从而节省大量时间。
发布于 2012-08-16 01:22:17
OData是用于访问数据的协议,而不是用于保护数据的协议。没有标准的解决方案将对数据的某些部分的访问限制为特定的角色或帐户,就像在每个普通的SQL数据库中一样。大多数安全措施都是基于“所有东西都是可见的,所有操作都是允许的”,而不是“默认情况下安全”。
当您想要使用OData从业务线应用程序中访问公司数据时,这是一个很大的障碍。如果您计划使用Ajax调用,则您的OData必须在互联网上可见,因此很容易受到各种攻击。对于互联网上已经可用的公共数据,OData似乎是一个很好的协议,但据我所知,目前还没有OData提供商实现基于角色的开箱即用权限。
使用这种权限扩展标准的WCF数据服务是可能的,但这是有代价的。我从经验中知道,安全性不能在事后添加,它必须是任何应用程序框架和数据存储设施不可或缺的一部分。你可能会抱着最好的希望,但你总是需要做最坏的打算,过不了多久,就会有人在互联网上寻找包含个人和公司敏感数据的不安全的OData源。
https://stackoverflow.com/questions/3387920
复制相似问题