Shiro概述以及核心概念
Shiro概述
Apache Shiro是Java的一个安全框架
Shiro是一个强大的简单易用的Java安全框架,主要用来更便捷的认证、授权、加密、会话管理、与Web集成、缓存等
Shiro使用起来小而简单
spring中有spring security ,是一个权限框架,它和spring依赖过于紧密,没有shiro使用简单。
shiro不依赖于spring,shiro不仅可以实现web应用的权限管理,还可以实现c/s系统,分布式系统权限管理,
shiro属于轻量框架,越来越多企业项目开始使用shiro.
Shiro核心概念
核心类:
Authentication
身份认证/登录,验证用户是不是拥有相应的身份;
Authorization
授权,即权限验证,验证某个已认证的用户是否拥有某个权限;
主要概念:
Subject
当前的操作用户:可以是人、爬虫、当前跟软件交互的东西。 在shiro当中我们可以统称"用户";
在代码的任何地方,都能轻易的获得Shiro Subject。
一旦获得Subject就能,登录、退出、访问会话、执行授权检查等
SecurityManager
SecurityManager管理所有用户的安全操作
引用了多个内部嵌套安全组件,是Shiro框架的核心
可以把它看成DispatcherServlet(springmvc)前端控制器。
用于调度各种Shiro框架的服务
Realms
Realms是用户的信息认证器和用户的权限认证器
执行认证(登录)和授权(访问控制)时,Shiro会从应用配置的Realm中查找很多内容
Realm 可以理解为读取用户信息、角色及权限的 DAO
SecurityManager要验证用户身份与权限,那么它需要从Realm获取相应的信息进行比较以确定用户身份是否合法;
可以把Realm看成DataSource,即安全数据源。
Shiro架构:
整体架构图:
subject:主体
主体可以是用户也可以是程序,主体要访问系统,系统需要对主体进行认证、授权。
securityManager:安全管理器
主体进行认证和授权都是通过securityManager进行。
authenticator: 认证器
主体进行认证最终通过authenticator进行的。
authorizer: 授权器
主体进行授权最终通过authenticator进行的。
sessionManager:会话管理
web应用中一般是用web容器对session进行管理,shiro也提供一套session管理的方式。
sessionDao:
通过sessionDao管理session数据,
cacheManager: 缓存管理器
主要对session和授权数据进行缓存,比如将授权数据通过cacheManager进行缓存管理,和 ehcache整合对缓存数据进行管理。
realm: 领域
相当于数据源,通过realm存取认证、授权相关数据。
cryptography: 密码管理
提供了一套加密/解密的组件,方便开发。比如 提供常用的散列、加/解密等功能。