#2019.2.2

  Apache Shiro是基于java的一个安全框架。他帮助我们完成:认证、授权、加密、会话管理、web集成、缓存等问题。

  在了Shiro之前,先要了解一下什么是权限管理?

  权限管理:只要涉及到用户与系统的交互都需要进行权限的管理,权限管理能实现用户访问系统的控制,按照对应的安全规则或者机制进行限制,通俗来说,只允许用户访问被授权的资源。

  权限管理包括用户用户身份验证和授权两个部分,简称授权认证。

  用户身份验证:

    1、身份认证:判断用户是否合法的一个过程。

    2、subject:主体user。即访问系统的用户,主体可以是系统,用户等。进行认证到的都成为主体。

    3、Principal 身份信息:他是主体进行身份认证的标识。标识具有唯一性,一个主体可以拥有多个身份,但必须要有一个主身份。

    4、credential:凭证信息:与身份信息配对是否相符合的一个标识。相当于账号的一个密码。

授权:

    1、访问控制,控制谁可以访问资源。主体进行身份验证后需要分配权限可以访问的资源,然而对于某些资源来说,若没有权限,身份验证通过也无法访问。

 初始Shiro

    刚刚说了,Apache Shiro是基于java的一个安全框架。这里,从功能的角度看一下Shiro的框架结构

                     

  Primary Concerns (核心关系): 

    Authentication:身份认证/登录。验证用户是否合法

    Authorization:授权,即权限验证,验证主体用户是否有某个权限的分配。

  Session Management:会话管理。即用户的在登录后的一次会话,在没有退出前,所有的信息都包含在会话中。

    Cryptography:数据的加密,保证其安全性,如密码以密文而非明文的形式存储在数据库中。

  Supporting Features (支持工具):

     Web Supprot:提供web环境。该框架可以web环境中使用。

     Caching(缓存):在用户登录后,可提供缓存,拥有的角色/权限不必每次对数据库进行访问,可提高效率。

     Concurrency(并发性):shiro支持多线程应用的并发认证。在一个多线程中开启另一个多线程,权限会自动进行传输。

     Testing(测试):提供测试的支持。

     Run as:允许用户假装另一个用户(他们允许的话)的身份并进行访问。

     Remember me:在本次登录退出后,下一次的访问不必重新进行访问。

  从系统结构的角度看Shrio:

     

     首先,要清楚Shiro架构主要的三个概念:Subject、Security Manager、Realms

      Subject:访问系统的用户,他可以是人,程序,第三方等当前访问系统的主体,他是一个抽象的概念。而且,可以从程序中的位置通过                 SecurityUtils.getSubject 的方式获取Subject对象,并进行操作。如登录,授权等。

      Security Manager:如图所示,Security Manager是整个Shiro的核心,一切的访问都从Security Manager开始,Subject所有的操作都将委托给Manager去进行交互。

      Realms:Realms充当了Shiro与数据安全间的“桥梁”,Realms可以看成DataSource(安全数据源),可以有一个或多个Realm。我们通常都自定义Realm,因为Shrio不清楚我们的用户存储/权限存储是以哪种的形式进行。

        Authenticator(认证器):Authenticator负责对主体进行认证。而我们也可以自定义认证策略,即自定义安全规则,什么时候进行认证,什么情况认证成功或者失败。

      Authorizer(授权器):Authorizer负责对主体进行授权,决定着用户主体可以有什么权限,能访问什么内容。

      Cryptography:密码模块,提供且提高一些常用的加密组件用于密码的加密或者解密。

       

            

Shiro的认识的更多相关文章

  1. shiro权限管理框架与springmvc整合

    shiro是apache下的一个项目,和spring security类似,用于用户权限的管理‘ 但从易用性和学习成本上考虑,shiro更具优势,同时shiro支持和很多接口集成 用户及权限管理是众多 ...

  2. springmvc 多数据源 SSM java redis shiro ehcache 头像裁剪

    获取下载地址   QQ 313596790  A 调用摄像头拍照,自定义裁剪编辑头像 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单;  技术:31359679 ...

  3. java springMVC SSM 操作日志 4级别联动 文件管理 头像编辑 shiro redis

    A 调用摄像头拍照,自定义裁剪编辑头像 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单;  技术:313596790freemaker模版技术 ,0个代码不用写 ...

  4. springmvc SSM shiro redis 后台框架 多数据源 代码生成器

    A集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单 下载地址    ; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类 ...

  5. springmvc SSM 多数据源 shiro redis 后台框架 整合

    A集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单 下载地址    ; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类 ...

  6. SpringMVC+Shiro权限管理【转】

    1.权限的简单描述 2.实例表结构及内容及POJO 3.Shiro-pom.xml 4.Shiro-web.xml 5.Shiro-MyShiro-权限认证,登录认证层 6.Shiro-applica ...

  7. shiro的使用2 灵活使用shiro的密码服务模块

    shiro最闪亮的四大特征是认证,授权,加密,会话管理. 上一篇已经演示了如何使用shiro的授权模块,有了shiro这个利器,可以以统一的编码方式对用户的登入,登出,认证进行管理,相当的优雅. 为了 ...

  8. shiro的使用1 简单的认证

    最近在重构,有空学了一个简单的安全框架shiro,资料比较少,在百度和google上能搜到的中文我看过了,剩下的时间有空会研究下官网的文章和查看下源码, 简单的分享一些学习过程: 1,简单的一些概念上 ...

  9. shiro实现session共享

    session共享:在多应用系统中,如果使用了负载均衡,用户的请求会被分发到不同的应用中,A应用中的session数据在B应用中是获取不到的,就会带来共享的问题. 假设:用户第一次访问,连接的A服务器 ...

  10. shiro在springmvc里面的集成使用【转】

    <dependency> <groupId>commons-collections</groupId> <artifactId>commons-coll ...

随机推荐

  1. js switch 用法

    //获取星期 //例子1 var day=new Date().getDay(); switch (day) { : x="Today it's Saturday"; break; ...

  2. linux下的启停脚本

    linux下的根据项目名称,进行进程的启停脚本 #!/bin/bash JAVA=/usr/bin/java APP_HOME=/opt/program/qa/wechat APP_NAME=prog ...

  3. http协议详解及htt面试题目,常见的http状态码

    http协议详解及htt面试题目,常见的http状态码 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP ...

  4. gdb 命令汇总

    https://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_109.html whatis expr 举例 whatis  uint64      -& ...

  5. 金蝶K3常用数据表

    金蝶K3WISE常用数据表 K3Wise 14.2 清空密码update t_User set FSID=') F ", ,P T #8 *P!D &D 80!N &@ &l ...

  6. ubuntu1604 golang环境

    copy来的,这里记录一下 1. 升级系统: sudo apt-get upgrade 2. 安装docker 下载docker-ce: https://download.docker.com/lin ...

  7. Asp.Net MVC 从客户端<a href="http://www....")中检测到有潜在危险的 Request.Form 值

    Asp.Net MVC应用程序, Framework4.0: 则需要在webconfig文件的 <system.web> 配置节中加上 <httpRuntime requestVal ...

  8. 在Vue项目中 选择图片并预览

    最近开始使用vue做项目 在这个过程中,碰到了大多数做前端肯定经历的一个问题,就是文件上传预览 花了点时间解决,因此分享一下预览功能的解决方案 页面: <div class="sele ...

  9. OO-第二单元总结

    一.三次作业的设计策略 (1). 第五次作业 第五次作业由于较为简单,在强测及互测中均没有出现BUG,但是并没有做优化.本次的设计有些不合理,所以在后面的作业中也做了重构.本次的作业主要有三个类,主函 ...

  10. pip安装库时报错,使用国内镜像加速

    pip install requests或pip --trusted-host pypi.python.org install requests报错: 原因:网上解释为网速太慢,或被防火墙 解决方法: ...