一、简介:讲解什么是权限控制,初学javaWeb的处理流程
1、什么是权限控制:
①、忽略特别细的概念,比如权限能细分很多种,功能权限,数据权限,管理权限等。
②、理解两个概念:用户和资源,让指定的用户/程序,只能操作指定的资源(CRUD)
2、初学javaWeb时怎么做的
①、Filter接口中有一个doFilter方法,自己编写好业务Filter,并配置对哪个web资源进行拦截
②、如果访问的路径命中对应的Filter,则会执行doFilter()方法,然后判断是否有权限进行访问对应的资源。
/api/user/info?id=1,访问的时候会带一个cookie或者sessionId,每一个浏览器打开都会有一个唯一的session的。
举例:用户登录之后才可以访问个人信息
二、说下权限框架核心知识ACL和RBAC
简介:介绍下什么是ACL和RBAC,这两种是目前用的最多的模型
在阿里,腾讯,百度,这两个思想往往是并存的。
①、ACL:Access Control List访问控制列表
A、以前盛行的一种权限涉及,它的核心在于用户直接和权限挂钩
B、优点:简单易用,开发便捷
C、缺点:用户和权限直接挂钩,导致在授予时的复杂性,比较分散,不便于管理
比如一个部门有很多的组,一个组里面有很多的成员,成员的申请 ,和审批是比较麻烦。
D、例子:常见的文件系统权限设计,直接给用户加权限。比如苹果系统,liunx系统
②、RBAC: Role Based Access Control
A、基于角色的访问控制系统,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限
B、简化了用户与权限的管理,通过对用户进行分类,使得角色与权限关联起来。
C、缺点:开发对比ACL相对复杂
D、例子:基于RBAC的模型的权限验证框架与应用 Apache Shiro ,spring Security
举个例子:BAT企业 ACL,一般是对报表系统,阿里的ODPS
总结:不能过于复杂,规则过多,维护性和性能会下降 ,更多分类 ABAC,PBAC等
二、简介:介绍主流的权限框架 Apache Shiro,spring Security
1、什么是spring security:官网基础介绍:
官网:https://spring.io/projects/spring-security
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring Ioc,DI(控制反转Inversion of Control,DI,Dependency Injection 依赖注入) 和AOP(面向 切面编程),为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
一句话:Spring Security的前身是 Acegi Security,是Spring项目组中用来提供安全认证服务的框架。
2、什么是Apache Shiro:官网基础介绍:
官网:https://github.com/apachce/shiro
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证,授权,密码和会话管理,使用Shiro的易于理解的API,您可以理解,轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
一句话:Shiro是一个强大易用的Java安全框架,提供了认证,授权,加密和会话管理的功能。
3、两个优缺点,应该怎么选择
①、Apache Shiro比Spring Security,前者使用更简单
②、Shiro 功能强大,简单,灵活,不跟任何的框架或者容器绑定,可以独立运行
③、Spring Security对Spring体系支持比较好,脱离Spring体系则很难看法
④、Spring Security支持Oauth鉴权:https://spring.io/projects/spring-ecurity-oauth,Shiro需要自己实现。
总结:两个框架没有谁超过谁,大体功能一致,新手一般先推荐Shiro,学习会更容易。