首页 技术 正文
技术 2022年11月12日
0 收藏 714 点赞 3,859 浏览 1738 个字

#2019.2.2

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

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

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

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

  用户身份验证:

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

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

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

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

Shiro的认识

授权:

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

Shiro的认识

 初始Shiro

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

                     Shiro的认识

  Primary Concerns (核心关系): 

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

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

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

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

  Supporting Features (支持工具):

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

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

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

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

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

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

  从系统结构的角度看Shrio:

     Shiro的认识

     首先,要清楚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:密码模块,提供且提高一些常用的加密组件用于密码的加密或者解密。

       

            

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,086
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,561
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,410
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,183
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,820
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,903