权限管理详解
1.权限管理
1.1什么是权限管理
权限管理包括用户身份认证和授权两部分,简称认证授权。
对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。
1.2用户身份认证
身份认证,就是判断一个用户是否为合法用户的处理过程。
最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。
对于采用指纹等系统,则出示指纹;对于硬件Key等刷卡系统,则需要刷卡
1.2.1 用户名密码身份认证流程
1.2.2 关键对象
上边的流程图中需要理解以下关键对象:
Subject:主体
访问系统的用户,主体可以是用户、程序等,进行认证的都称为主体;
Principal:身份信息
是主体(subject)进行身份认证的标识,标识必须具有唯一性,如用户名、手机号、邮箱地址等,一个主体可以有多个身份,但是必须有一个主身份(Primary Principal)。
credential:凭证信息
是只有主体自己知道的安全信息,如密码、证书等。
resource : 资源 (Subject 必须要具备该资源的访问权限,才能访问)
permission:权限 (Subject 必须要具备permission才能访问资源)
1.3 授权
授权,即访问控制,控制谁能访问哪些资源。主体进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访问的。
1.3.1 授权流程
下图中橙色为授权流程。
1.4 权限管理
权限分为粗颗粒和细颗粒
,
粗颗粒权限 是指对资源类型的权限,如:url、菜单、按钮、页面。
实现:可以将代码抽取出来统一处理,SpringMVC拦截器
细颗粒权限 是对资源实例的权限,细颗粒度更加具体,如:用户id为1的修改url
实现:因为要对数据进行处理,所以在业务层 service中单独处理
1.5如何对资源进行权限控制 (授权的核心)
- 基于角色的访问控制
- 基于资源的访问控制
以下是两者的视图:
1.6 权限模型 (就是做权限管理时,数据库中的表怎么设计)
主体(账号、密码)
资源(资源名称、访问地址)
权限(权限名称、资源id)
角色(角色名称)
角色和权限关系(角色id、权限id)
主体和角色关系(主体id、角色id)
如下图:
通常企业开发中将资源和权限表合并为一张权限表,如下:
资源(资源名称、访问地址)
权限(权限名称、资源id)
合并为:
权限(权限名称、资源名称、资源访问地址)
本文转载:https://blog.csdn.net/weixin_44106334/article/details/103356497