数据库设计 – 构建平台授权许可模型

前端之家收集整理的这篇文章主要介绍了数据库设计 – 构建平台授权许可模型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
任何平台(PaaS)认证的安全性的重要部分是能够以用户/应用程序或每个身份验证为基础限制和/或定义特定应用程序或用户的“权限”或权限.

在现代平台或产品API中发现的通用权限模型基于“范围”的概念.在我的研究中,GitHub,Facebook,Instagram,Etsy(和更多)都在OAuth实现中使用这种权限建模风格.然而,这个“范围”模型似乎只关心外部(即第三方)应用程序如何访问经过身份验证的用户的数据.

在内部,权限模型似乎更侧重于基于“角色”的模型(管理员,主持人,用户等)或许多其他自定义实现.

我的问题是:“什么权限模型最适合现代化的PaaS,它既要限制用户的某些操作,也可以限制第三方应用程序访问用户的数据,以及如何以性能意识的方式进行架构?

我的初步研究使我对内容和外部使用基于范围的权限模型.不幸的是,构建这样的系统并不是微不足道的.我已经看到了创建这样一个架构的多种方法

> AR友好关系数据库方式:

>使用连接表创建多个表,用于权限列表,用户可用权限,用户令牌和用户令牌的活动权限之间的多对多关系.
>用户可以使用令牌进行身份验证,并指定最多为该用户设置的权限,在该令牌上可用的许可权限

>聪明的位掩蔽方式:

>在数据集中使用一个简单的整数列来存储整数值
>以二进制方式访问整数值,使用按位运算符通过将权限表示为单个位来设置,获取,切换(等)用户或其令牌的权限

他们似乎对每个人都有利弊. AR友好的方式似乎是一个非常灵活的解决方案,但也可能是一个严重的性能问题,因为必须运行多个连接/查询,并且必须在每个经过身份验证的调用上创建ORM模型实例. Bit-masking方法似乎是非常快速和有效的,但是开发时不太直观,并且更容易出错.另外,位掩码似乎是一个限制性的解决方案,它只会容易地允许一个非常“二进制”的权限模型(可以或不能做),没有中等面积/快乐媒体,并且它将限制权限基于硬件限制的硬64位限制.

有没有其他方法的权限建模或架构,我错过/没有想到?或者我在正确的轨道上,性能考虑不是像我正在做的那样巨大的关注(就关系方法而言)

非常感谢!

TL;博士:

什么权限模型最适合现代PaaS,既要限制用户的某些操作,又限制第三方应用程序访问用户的数据,以及如何以有意识的方式进行架构设计?

解决方法

我将从Spring Security ACL开始.它们使用位掩码,并且可以(相对)容易地与诸如ehcache的缓存集成.如果您使用JPA进行数据访问,那么也可以使用JPA的缓存.

http://static.springsource.org/spring-security/site/docs/current/reference/springsecurity.html

模式:

http://static.springsource.org/spring-security/site/docs/3.0.x/reference/appendix-schema.html

OAuth的:

http://static.springsource.org/spring-security/oauth/

猜你在找的MsSQL相关文章