在多用户服务中控制访问的标准方法是根据需要提供尽可能多的服务方法,其中每种服务方法都具有具体的结果和访问权限。
例如,
Moderator
有权调用GetModerationAwaitingPosts
服务方法来访问等待审核的任何访问者的帖子
Visitor
有权致电GetOwnedPosts
服务方法,仅访问自己的帖子,包括等待帖子的草稿和审核
Visitor
有权致电GetModeratedPosts
服务方式,仅访问所有访问者的审核帖子
但是可能还有另一种方法 - 单一服务方法GetPosts
来请求允许请求者查看的帖子。
任何已登录的用户都有权调用此方法。
首先根据来电者的角色过滤帖子。
然后根据GetPosts
方法传递的参数过滤帖子,或在客户端过滤帖子。
例如,通过查询拦截器在WCF数据服务中使用此方法。
如何根据在不同体系结构和方法中命名和处理的用户内部服务方法(如SOA,REST,CQRS)来过滤数据?这是一个可靠的解决方案吗?
是否有任何书籍/文章详细考虑这些方法之间的差异?
至于我,当发现请求的结果取决于请求者时,我发现它真的很奇怪和不寻常。
答案 0 :(得分:0)
是的,有一种称为基于属性的访问控制(ABAC,abac)的访问控制范例,它实现了基于数据的基于上下文的授权,该授权使用有关用户的信息(角色,部门,年龄,位置)。 ..)关于资源(所有者,分类,类型......)动作(查看,编辑,删除)和上下文(时间,IP地址......)
ABAC将允许您实施政策,例如:
ABAC提供如下所示的架构。
在架构中,您可以使用PEP或策略执行点的概念,您可以使用它来保护GUI,API,Web服务,微服务,ESB和数据库中的任何内容。
PEP呼叫作为架构核心的PDP或策略决策点。 PDP使用一组策略来确定是应该授予还是拒绝访问。它还可以使用外部属性源,PIP或策略信息点来帮助确定是否确实应该授予访问权限。
今天有一种语言可以实现ABAC。这种语言称为XACML(xacml)。 XACML为您提供:
使用XACML,您可以创建JSON授权请求,将它们发送到PDP并获取JSON响应。这是一种非常轻量级的回复方式。
这意味着你可以