文章目录
一 什么是权限系统
1.主要目的是确保只有经过授权的⽤户才能访问和操作特定的系统资源,从而保护系统的安全性和完整性
2.主要实现的功能可以分为认证和授权两种
2.1认证:主要是验证⽤户的身份,例如通过⽤户名和密码的验证来确定⽤户是否合法,⼀旦认证成功,⽤户就进入了授权阶段
2.2授权:根据系统设置的安全规则或策略,决定⽤户可以访问哪些资源,以及可以对这些资源进⾏哪些操作
二互联⽹公司主流的权限设计模型,如ACL和RBAC等
什么是ACL
1.Access Control List,访问控制列表,是⼀种直接的权限管理方式,用户的权限是直接与资源相关联的。
2.每个资源都有⼀个访问控制列表,该列表指定了哪些⽤户或⽤户组对该资源具有哪些权限
ACL的优点
1.直观易懂:用户和资源的权限关系直接明了,易于理解和配置。
2.控制精确:可以精确地控制每个⽤户对每个资源的访问权限。
ACL的缺点
1.当用户或资源数量多时,ACL的管理会变得复杂和繁琐,维护成本高
2.当需要给几十万个用户增加或者移除某个权限时,就麻烦了
什么是RBAC
1.Role-Based Access Control,基于⻆⾊的访问控制,核⼼思想是将权限与⻆⾊相关联,⽽不是直接与⽤户相关联。
2.在RBAC中,⻆⾊是权限的集合,⽤户通过成为适当⻆⾊的成员⽽得到这些⻆⾊的权限。
3.简化了⽤户与权限的管理,通过对⽤户进⾏分类,使得⻆⾊与权限关联起来。
4.⽐如上述案例⼏⼗万个⽤户,具备某个⻆⾊,如果需要加权限只需要对应的⻆⾊增加权限即可
RBAC的优点
1、灵活性⾼:可以动态地分配和撤销⻆⾊的权限,适应组织结构和业务2流程的变化。
2、管理便捷:通过管理⻆⾊和权限的映射关系,简化⽤户权限的管理过程。
3、可扩展性好:可以⽅便地添加新的⻆⾊和权限,更好的适应业务的发展
RBAC的缺点
1、开发相对ACL更为复杂,以及在⻆⾊和权限数量多时,管理复杂度会上升
三主流的权限认证框架
Apache Shiro
1、地址:https://shiro.apache.org/
2、易于使⽤:Shiro的API设计简洁直观,能够快速地集成到应⽤程序中
3、功能全⾯:提供了身份验证、授权、加密和会话管理等安全相关的功能,满⾜应⽤程序安全性的基本需求。
4、灵活性:Shiro⽀持多种应⽤场景,包括Web、⾮Web、分布式和云环境等,能够灵活地应对不同的需求。
Shiro应⽤场景
1、Shiro适⽤于各种Java应⽤程序,特别是那些需要快速集成安全功能的应⽤程序。
2、⽆论是Web应⽤、桌⾯应⽤还是分布式系统,Shiro都能提供强⼤的功能⽀持。
Shiro优点
易于学习和使⽤:对于初学者来说,Shiro的⽂档和教程⾮常丰富,易于上⼿。
轻量级:相对于其他安全框架,Shiro更加轻量级,对系统资源的消耗⼩。
Shiro缺点
社区⽀持:虽然Shiro的社区活跃,但相对于Spring Security等框架,其社区规模和资源可能少。
Spring Security
1、地址:https://spring.io/projects/spring-security
2、与Spring集成:Spring Security与Spring框架⽆缝集成,使得在Spring应⽤中使⽤安全功能变得⾮常简单。
3、⾼度可定制:Spring Security提供了丰富的配置选项和扩展点,可以根据具体需求进⾏⾼度定制。
4、强⼤的功能:除了基本的身份验证和授权功能外,Spring Security还⽀持OAuth2、OpenID Connect等⾼级功能。
Spring Security应⽤场景
1、Spring Security主要适⽤于基于Spring框架的应⽤程序,特别是那些需要⾼度可定制性和强⼤功能⽀持的应⽤程序。
Spring Security优点
1、与Spring深度集成:对于使⽤Spring框架的开发者来说,Spring Security是⾸选的安全框架。
2、强⼤的社区⽀持:Spring Security拥有庞⼤的社区和丰富的资源,可以快速解决遇到的问题。
Spring Security缺点
1、学习曲线陡:相对于Shiro,Spring Security的学习曲线可能陡,需要⼀定的时间来掌握。
2、相对较重:由于提供了丰富的功能和配置选项,Spring Security相对于Shiro可能为重量级
Sa-Token
1、地址:https://sa-token.cc/doc.html#/
2、功能全⾯:提供了登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权等功能,满⾜了多种场景下的权限管理需求。
3、简单易⽤:Sa-Token的API设计简洁直观,易于上⼿。开发⼈员可以快速集成到项⽬中,减少开发成本和时间。
4、轻量级:相⽐其他权限框架,Sa-Token更加轻量级,对系统资源的消耗⼩,适⽤于各种规模的项⽬。
5、灵活性:Sa-Token提供了丰富的配置选项和扩展点,可以根据具体需求进⾏定制和扩展。
Sa-Token应⽤场景
1、Sa-Token适⽤于各种需要进⾏权限管理的Java应⽤程序,包括但不限于Web应⽤、分布式系统、微服务架构等。
2、⽆论是简单的⽤户⻆⾊权限管理,还是复杂的业务逻辑权限控制,Sa-Token都能提供有效的解决⽅案
Sa-Token优点:
- 功能强⼤:Sa-Token提供了全⾯的权限管理功能,能够满⾜各种复杂的权限需求。
- 集成⽅便:Sa-Token与Spring框架等主流Java框架集成良好,可以轻松地与其他组件和库配合使
⽤。 - 性能优良:由于Sa-Token的轻量级设计,它对系统性能的影响⼩,可以保持应⽤的良好响应速
度。 - 社区⽀持:Sa-Token拥有活跃的社区和丰富的资源,开发者可以⽅便地获取帮助和解决问题。
Sa-Token缺点:
- 学习成本:虽然Sa-Token的API设计简洁,但对于初学者来说,仍需要⼀定的时间来熟悉和掌握其
使⽤⽅式。 - ⽂档和教程不⾜:相⽐于⼀些成熟的权限框架,Sa-Token的⽂档和教程可能相对少,这可能会增加开发者的学习难度。