SpringSecurity之——权限管理与SpringSecurity概述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/l1028386804/article/details/102778701

1. 为什么需要权限管理

  • 安全性:误操作、人为破坏、数据泄露等
  • 数据隔离:不同权限能看到及操作不同的数据
  • 明确职责:运营、客服等不同角色,leader和dev等不同级别

2.权限管理核心

  • 用户-权限:人员少,功能固定,或者特别简单的系统
  • RBAC(Role-Based Access Control):基于角色的权限访问控制,用户-角色-权限

3. 理想中的权限管理

  • 能实现的角色级权限 RBAC
  • 能实现功能级、数据级权限
  • 简单、易操作、能够应对各种需求

4. 相关操作界面

  • 权限管理界面、角色管理界面、用户管理界面
  • 角色和权限关系维护界面、用户和角色关系维护界面

5. 开源权限管理项目

  • Spring Security
  • Apache Shiro

6. SpringSecurity

6.1 常用认证模式

  • basic 是http1.0开始的、针对特定的资源需要提供用户名和密码才可以访问。用户名:密码 以base64编码,浏览器会在报文头部加入base64编码的内容,服务器解析出这些信息并且认证通过才可以访问。缺点:无状态,导致每次通信都需要要带上认证信息。传输不安全,认证信息用的是base64位编码,基本上属于明文传输,很容易对报文截取盗用认证信息
  • Digest 用来替代原来的basic模式、与basic不同的是、浏览器会对用户名、密码、http方法、对请求资源的uri等组合后进行md5加密再把计算得到的结果发送给服务器,服务器获取到信息后同样会对用户名密码http方法等组合运算后再次以结果比较,如果相同就是认证通过。避免了明文传输
  • X.509 证书认证
  • LDAP 是轻量级的目录访问协议
  • Form 基于表单的验证

6.2 常用权限拦截器讲解

  • SecurityContextPersistenceFilter 位于过滤器的顶端、是第一个起作用的过滤器。第一个用途是保证用户的session已经存在了SpringSecurity上下文中,第二个用户是在所有过滤器执行完后清空 SecurityContextHolder的内容
  • LogoutFilter 处理注销请求
  • AbstractAuthenticationProcessingFilter 处理form登录的过滤器
  • DefaultLoginPageGeneratingFilter 用来生成一个默认的登录页面
  • BasicAuthenticationFilter 进行basic验证的
  • SecurityContextHolderAwareRequestFilter 用来包装用户的请求
  • RememberMeAuthenticationFilter 记住我功能 依赖Cookie实现
  • AnonymousAuthencationFilter 当用户未登录时默认分配匿名权限
  • ExceptionTranslationFilter 处理filterSecurityInterceptor中抛出的异常
  • SessionManagementFilter 防止会话攻击
  • FilterSecurityInterceptor  包含用户的权限控制
  • FilterChainProxy 安装顺序来调用一组filter

总结:SpringSecurity:身份认证、权限拦截、权限缓存、权限的数据库管理、自定义决策

猜你喜欢

转载自blog.csdn.net/l1028386804/article/details/102778701