ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Shiro安全框架

2022-01-06 12:06:38  阅读:119  来源: 互联网

标签:框架 管理 用户 认证 安全 授权 权限 Shiro


一、权限管理

1.1 什么是权限管理?

不同身份的用户进入到系统所能够完成的操作是不相同的,我们对不同用户进行的可执行的操作管理称之为权限管理.

1.2 如何实现权限管理?

权限管理设计
  • 基于主页的权限管理(不用用户使用不同的主页,权限通过主页功能菜单进行限制)
    • 适用于权限管理比较单一、用户少、没类用户权限固定
  • 基于用户和权限的权限管理
    • 可以实现权限的动态分配,但是不够灵活
  • 基于角色的访问控制
    • RBAC基于角色的访问控制

二、Shiro

2.1 认证授权流程

  • 认证:对用户的身份进行检查(登录验证)
  • 授权:对用户的权限进行检查(是否有对应的操作权限)
  • 流程示意图:
    在这里插入图片描述

2.2 安全框架

  • 帮助我们完成用户身份认证及权限检查的功能框架
  • 常用的安全框架:
    • Shiro:Apache Shiro是一个功能强大并且易用的Java安全框架(小而简单)
    • Spring Security:基于Spring的一个安全框架,依赖Spring
    • OAuth2:第三方授权登录
    • 自定义安全认证中心

2.3 Shiro

  • Apache Shiro是一个功能强大并且易用的Java安全框架
  • 可以完成用户认证、授权、密码及会话管理
  • 可以在任何应用系统中使用(主要针对单体项目的权限管理)

三、Shiro的工作原理

3.1 Shiro的核心功能

在这里插入图片描述

  • Anthentication 认证,验证用户是否有相应的身份-登录认证:
  • Authorization 授权,即权限验证;对已经通过认证的用户检查是否具有某个权限或者角色,从而控制是否能够进行某种操作;
  • SessionManagment 会话管理,用户在认证成功之后创建会话,在没有退出之前,当前用户的所有信息都会保存在这个会话中;可以是普通的JavaSE应用,也可以是web应用
  • Cryptography 加密,对敏感信息进行加密处理,shiro就提供这种加密机制;
  • 支持的特性:
    • Web Support – Shiro提供了过滤器,可以通过过滤器拦截web请求来处理web应用的访问控制
    • Caching 缓存支持,shiro可以缓存用户信息以及用户的角色权限信息,可以提高执行效率
    • Concurrency shiro支持多线程应用
    • Testing 提供测试支持
    • Run As 允许一个用户以另一种身份去访问
    • Remeber Me 记住密码
  • 说明:Shiro是一个安全框架,不提供用户及权限的维护(用户的权限管理需要我们自己去设计)

3.2 Shiro核心组件

在这里插入图片描述

  • Shiro 三大核心组件:Subject、Security Manager、Realms
    • Subject,表示待认证和授权的用户
    • Security Manager,它是Shiro框架的核心,Shiro就是通过Security Manager来进行内部实例的管理,并通过它来提供安全管理的各种服务。
      • Authenticator,认证器
      • Authorizer,授权器
      • SessionManager,会话管理器
      • CacheManager,缓存管理器
    • Realm,相当于Shiro进行认证和授权的数据源,充当了Shiro与安全数据之间的“桥梁”或者“连接器”。也就是说,当对用户认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
      在这里插入图片描述

标签:框架,管理,用户,认证,安全,授权,权限,Shiro
来源: https://blog.csdn.net/LiHaoDong_JAVA/article/details/107817265

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有