首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用OAuth2/OpenId执行复杂规则系统?

如何使用OAuth2/OpenId执行复杂规则系统?
EN

Stack Overflow用户
提问于 2016-02-17 20:40:57
回答 2查看 133关注 0票数 1

我正在考虑将REST服务构建为后端,并研究OAuth2/OpenId来处理安全性,但我不知道如何将复杂的结构与规则或作用域结构相匹配。

目前还没有构建,所以可能我的推理是错误的,域模型可以修改以满足我的需要,或者OAuth2/OpenId不适合我。

我有一个域模型如下:

  • Country
  • 一个区域,它与一个国家相连。一个国家拥有多个区域,但一个区域只属于一个国家。
  • 一个产品,它链接到一个国家,也可以是一个区域。
  • 可以在产品上执行的操作。(不是直接链接到产品,而是与CRUD相关的东西。)
  • Profile,它链接到一个国家(可选为一个区域),并保存操作列表。
  • 链接到一个或多个配置文件的用户

用户可以请求一个产品列表。在这些产品上,如果产品的国家/区域与配置文件国家/地区相匹配,他可以根据配置文件允许的内容执行操作。

想象一下:

代码语言:javascript
复制
Product | Country | Region
--------------------------
      A |       X |      Z
      B |       X |      Y

Profile | Country | Region | Action
-----------------------------------
      I |       X |      Z | UPDATE
      I |       X |      Z | DELETE
      J |       X |      Y | DELETE

用户被链接到配置文件I和J。

  • 如果用户选择Product,则允许他更新产品,因为国家X和区域Z匹配。
  • 如果用户选择产品B,则不允许他更新产品,因为即使国家X匹配,区域Y也不匹配配置文件I。

这是我的问题。我不太明白如何使用OAuth2/OpenId提供的基本规则和作用域来实现这个复杂的规则系统。大多数示例使用一个非常简单的概念,基本CRUD允许与否,但我需要另一个层次。

简单地使用系统对用户进行身份验证,但每次仍然必须执行深入的操作验证调用似乎是开销。然后,我可以跳过OAuth2/OpenId并执行我自己的验证。

或者有其他方法可以对我的需求进行建模以适应OAuth2/OpenId的概念?

EN

回答 2

Stack Overflow用户

发布于 2016-02-18 18:49:08

OpenID连接是更通用的令牌请求协议OAuth 2.0之上的身份验证协议。

它们与您如何实现授权/业务规则无关。

此外,OIDC/OAuth的结果是身份数据、范围以及可能是粗粒度的身份数据。ClaimsPrincipal而不是,是任意授权数据的倾倒地。

授权是根据传入的身份进行的,没有专门的“技术”或“协议”用于授权。一种流行的方法是“基于资源的授权”。这已经内置到了新的asp.net核心中--但如果不是这样的话,自己实现并不难。

https://docs.asp.net/en/latest/security/authorization/resourcebased.html

票数 1
EN

Stack Overflow用户

发布于 2016-02-18 13:14:45

我会将所有这些信息(国家、地区、配置文件、操作)作为ClaimsPrincipal中的clams,然后使用当前用户声明中的信息来检测是否具有用户权限或不执行操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35467282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档