暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Spring Security OAuth2.0 基本概念之授权

227decision 2020-06-01
1337

什么是授权


  • 授权:授权是用户认证通过后根据用户的权限来控制用户访问资源的过程,拥有资源的访问权限则正常访问,没有权限则拒绝访问。

  • 为什么要授权:认证是为了保证用户身份的合法性,授权则是为了更细粒度的对隐私数据进行划分,授权是在认证通过后发生的,控制不同的用户能够访问不同的资源。

  • eg:微信登录成功后用户即可使用微信的功能,比如:发朋友圈,添加好友和视频原创声明功能等,它们都是微信的资源即功能资源。这个根据用户的权限来控制用户使用资源的过程就是授权。


授权的数据模型

 

授权可简单理解为who对what(which)进行how操作。

  • who,即主体(subject),主体一般是指用户,也可以是程序,需要访问系统中的资源。

  • what,即资源(resource),如系统菜单、页面、按钮、代码方法、系统商品信息和系统订单信息等。系统菜单、页面、按钮和代码方法都属于系统功能资源,对于web系统每个功能资源通常对应一个URL;系统商品信息、系统订单信息都属于实体资源(数据资源),实体资源由资源类型和资源实例组成,比如商品信息为资源类型,商品编号001的商品为资源实例。

  • how,权限/许可(permission),规定了用户对资源的操作许可,权限离开资源没有意义,通过权限可知用户对哪些资源都有哪些操作。


主体、资源、权限相关的数据模型如下:

  • 主体(用户id、账号、密码、...)

  • 主体和角色关系(用户id、角色id、...)

  • 角色(角色id、角色名称、...)

  • 角色和权限关系(角色id、权限id)

  • 权限(权限id、权限标识,权限名称、资源id、...)

  • 资源(资源id、资源名称、访问地址、...)


关系如下图:


通常企业开发中将资源和权限表合并为一张权限表,如下:

资源(资源id、资源名称、访问地址、...)

权限(权限id、权限标识、权限名称、资源id、...)

合并为:

权限(权限id、权限标识、权限名称、资源名称、访问地址、...)


修改后的数据模型如下图:

最后修改时间:2020-07-01 12:54:27
文章转载自227decision,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论