我正在考虑将REST服务构建为后端,并研究OAuth2/OpenId来处理安全性,但我不知道如何将复杂的结构与规则或作用域结构相匹配。
目前还没有构建,所以可能我的推理是错误的,域模型可以修改以满足我的需要,或者OAuth2/OpenId不适合我。
我有一个域模型如下:
用户可以请求一个产品列表。在这些产品上,如果产品的国家/区域与配置文件国家/地区相匹配,他可以根据配置文件允许的内容执行操作。
想象一下:
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。
这是我的问题。我不太明白如何使用OAuth2/OpenId提供的基本规则和作用域来实现这个复杂的规则系统。大多数示例使用一个非常简单的概念,基本CRUD允许与否,但我需要另一个层次。
简单地使用系统对用户进行身份验证,但每次仍然必须执行深入的操作验证调用似乎是开销。然后,我可以跳过OAuth2/OpenId并执行我自己的验证。
或者有其他方法可以对我的需求进行建模以适应OAuth2/OpenId的概念?
发布于 2016-02-18 10:49:08
OpenID连接是更通用的令牌请求协议OAuth 2.0之上的身份验证协议。
它们与您如何实现授权/业务规则无关。
此外,OIDC/OAuth的结果是身份数据、范围以及可能是粗粒度的身份数据。ClaimsPrincipal
是而不是,是任意授权数据的倾倒地。
授权是根据传入的身份进行的,没有专门的“技术”或“协议”用于授权。一种流行的方法是“基于资源的授权”。这已经内置到了新的asp.net核心中--但如果不是这样的话,自己实现并不难。
https://docs.asp.net/en/latest/security/authorization/resourcebased.html
发布于 2016-02-18 05:14:45
我会将所有这些信息(国家、地区、配置文件、操作)作为ClaimsPrincipal中的clams,然后使用当前用户声明中的信息来检测是否具有用户权限或不执行操作。
https://stackoverflow.com/questions/35467282
复制