我是这方面的新手,虽然我能够区分role-based和policy-based授权模型,但我似乎不明白基于策略的授权模型与基于权限的授权模型之间是否存在区别。在概念层面上,它们之间有什么区别?policy和permission术语可以互换使用吗?
发布于 2021-10-06 08:42:15
我敢肯定,你在谷歌上看到的基于政策的auth的经典例子是一款销售酒精的应用程序,在(正常国家)会读到:
Allow user if user.age > 18这是以角色为基础的.
Allow user if user.role is in {"Adult"}或基于权限的权限将读取
Allow user if user.permission == "CanBuyAlcohol"当您认为将某人置于角色中的规则可能是任意的时,基于角色的好处是显而易见的。例如,一些国家的酒精是非法的,有些国家有不同的年龄,你可以看到你的认证代码是如何变得复杂的。
if(!user.country.IsInLockdown)
{
If user.country == UK
Allow user if user.age > 18
else if user.country = "US"
//check local state laws
Allow user if user.age > 21
else if user.country.religion == Muslim && ! user.IsTourist
return false
...显然,对于基于角色的auth,您仍然需要在某个地方这样做,以确定是否可以将某人放到不同的角色中。但是,这可以委托给一个人或者一个单独的特定软件,而不是嵌入到您的应用程序中,而应用程序可能并不关心这些细节。
基于权限被认为是有问题的,因为您最终会拥有一个庞大的用户网格和无法维护的权限。
userid, canBuyAlcohol, canBuyCigarettes, canPlayInBallPit
1, yes, yes, no
2, no, no, yes
3, no, yes, yes ?!?https://softwareengineering.stackexchange.com/questions/432474
复制相似问题