Shiro简介:
Apache Shiro 是强大易用Java的安全框架,提供了认证、授权、加密和会话管理等功能。
Shiro的应用场景:对于任何一个应用程序,Shiro都能提供全面的安全管理服务,不仅可以用在javaSE环境还可以用在javaEE环境。
Shiro的架构图:
从外部来看Shiro,即从应用程序角度来观察使用Shiro完成工作。
从外部看Shiro分为四部分:ApplicationCode-->编写的代码、Subject-->主体、
Shiro SecurityManager-->安全管理器、Realm-->领域;
从Shiro内部看Shiro的架构:
Shiro涉及常见的名词
Shiro中常见的英文词汇:
Subject --主体(当前用户)
Security --安全
Realm --领域(操作数据源)
Authenticator --认证器
Authentication --认证
Authorizer -->授权器
Authorization -->授权
Matcher --匹配器
Principal --身份(用户名)
最常见的principals(身份)和credentials(凭证)组合就是用户名/密码。
Shiro配置文件--->Shiro.ini
Shiro.ini 一般放在路径-->src下(ClassPath)
Shiro.ini 文件配置的数据格式为--> key-value键值对形式
Shiro.ini 的应用场景:
ini配置文件适用于于用户少且不需要再运行时动态创建的情形下使用。
环境搭建实现简单认证-->
1)导入所依赖的架包
2)配置Shiro.ini文件
3)编写实现简单验证的测试类
package
4)测试类打印结果:
Shiro内置的JDBCRealm
1)Shiro默认使用自带的IniRealm,IniRealm从ini配置文件中读取用户的信息。
2)大部分情况下需要从系统的数据库中读取用户信息,所以需要使用JDBCRealm或自定义Realm。
A--使用JDBCRealm提供数据源,从而实现认证
导入架包
ini文件配置
测试类同上
密码加密实现方案
几种常见加密算法
1)对称加密算法(加密与解密密钥相同)
2)非对称算法(加密密钥和解密密钥不同)
3)散列算法
加盐-->所谓加Salt(盐)方法,就是加点“佐料”。
密码加密实现方案-->其基本想法是这样的:当用户首次提供密码时(通常是注册时), 由系统自动往这个密码里撒一些“佐料”,然后再散列。而当用户登录时, 系统为用户提供的代码撒上同样的“佐料”,然后散列,再比较散列值,来确定密码是否正确。
迭代-->就是值加密的次数
凭证匹配器-->在Realm接口的实现类AuthenticatingRealm中有credentialsMatcher属性。
意为凭证匹配器。常用来设置加密算法及迭代次数等。
授权-->授权又称作访问控制,是对资源访问管理的过程。
Shiro中常见的授权的方式--->
Shiro支持的三种授权的方式:代码触发、 注解触发、 标签触发、