2019-10-30Java-077

每日总结


一、Shiro概念以及组成

    1.  概念:Apache Shiro是一个强大易用的Java安全框架,提供了认证,授权和加密会话管理等功能,Shiro不仅可以使用在JavaSE环境,也可以用在JavaEE环境下

2019-10-30Java-077_第1张图片
主要模块

    2.组成部分

2019-10-30Java-077_第2张图片
组成

    3.涉及到的名词

    Subject:主题

    Security:安全

    Reala:领域、范围

    Authenticator:认证器

    Authentication:认证

    Authorizer:授权器

    Authorization:授权

    Cryptography:密码、加密

    Credential:证书、凭证

    Matcher:匹配器

    Principal:身份

2019-10-30Java-077_第3张图片
主要名词

详细解释:

2019-10-30Java-077_第4张图片
详细解释

二、Shiro安全框架中的ini配置

    ini配置:

ini配置

    a.main:提供了对跟对象SecurityManager及其依赖的配置

    b.users:提供了对用户/密码及其角色的配置, 用户名=密码,角色1,角色2

    c.roles:提供了角色及权限直线关系的配置,角色=权限1,权限2

    d.urls:用于web,提供了对web url拦截相关的配置,url=拦截器【参数】,拦截器

    示例:

2019-10-30Java-077_第5张图片
实例

三、 Shiro内置的JDBCRealm

       1. Realm:域,领域,Realm 充当了 Shiro 与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro 会从应用配置的 Realm 中查找用户及其权限信息。

        从这个意义上讲,Realm 实质上是一个安全相关的 DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给 Shiro 。当配置 Shiro时,你必须至少指定一个 Realm ,用于认证和(或)授权。配置多个 Realm 是可以的,但是至少需要一个。

        Shiro 内置了可以连接大量安全数据源(又名目录)的 Realm,如 LDAP、关系数据库(JDBC)、类似INI 的文本配置资源以及属性文件等。如果缺省的 Realm 不能满足需求,你还可以插入代表自定义数据源的自己的 Realm 实现。

2019-10-30Java-077_第6张图片
Realm的主要功能

    2.AuthenticatingRealm类:认证使用的Realm,只包含认证的方法,认证时调用doGetAuthenticationInfo方法,三个参数的含义:

参数的含义:

参数的含义

    3.使用内置JDBCRealm对表中数据进行认证需要注意:默认查的表名为users表,默认查询的属性名为userName和passWord


四、加密算法

    1.加密算法:加密算法通常分为对称加密算法(加密与解密密钥相同)和非对称算法(加密密钥和解密密钥不同),其中非对称加密算法适合互联网的发展

        a.给原文加入随机数生成新的MD5值称为加盐,ByteSource类型通过借助ByteSource类的util方法完成数据的转化叫加盐

        b.加密的次数称为迭代

    2.代码实现

2019-10-30Java-077_第7张图片
代码实现

五、如何使用Shiro进行认证和授权(自定义Realm,忽略JdbcRealm代码)

1.添加Shiro安全框架需要的依赖,配置Shiro.ini文件

添加依赖:

2019-10-30Java-077_第8张图片
添加依赖

配置Shiro.ini文件:

2019-10-30Java-077_第9张图片
配置Shiro.ini文件

2.创建Java类继承AuthorizingRealm,并且重写doGetAuthenticationInfo:认证的方法以及doGetAuthorizationInfo:授权的方法

2019-10-30Java-077_第10张图片
Java类继承AuthorizingRealm  

3.编写AuthenticationTest测试类

2019-10-30Java-077_第11张图片
测试类

运行结果:

2019-10-30Java-077_第12张图片
运行结果

数据库中表中数据:

2019-10-30Java-077_第13张图片
数据库中表中数据

你可能感兴趣的:(2019-10-30Java-077)