一、简介
Apache Shiro 是一个功能强大和易于使用的Java安全框架,为开发人员提供一个直观而全面的的解决方案的认证,授权,加密,会话管理。
1.Shiro主要有四个组件
- SecurityManager
典型的 Facade,Shiro 通过它对外提供安全管理的各种服务。
- Authenticator
验证。对“Who are you ?”进行核实。通常涉及用户名和密码。
这个组件负责收集 principals 和 credentials,并将它们提交给应用系统。如果提交的 credentials 跟应用系统中提供的 credentials 吻合,就能够继续访问,否则需要重新提交 principals 和 credentials,或者直接终止访问。
- Authorizer
授权。身份份验证通过后,由这个组件对登录人员进行访问控制的筛查,比如“who can do what”, 或者“who can do which actions”。Shiro 采用“基于 Realm”的方法,即用户(又称 Subject)、用户组、角色和 permission 的聚合体。
- Session Manager
这个组件保证了异构客户端的访问,配置简单。它是基于 POJO/J2SE 的,不跟任何的客户端或者协议绑定。
2.调用流程
Application Code:应用程序代码。由开发人员负责开发
Subject:主题。可以是一个用户,也可以是与系统交互的另一个系统,主题绑定shiro的权限管理
SecurityManager:安全管理。由Shrio框架提供,负责管理Shrio框架内部的对象,最核心的一个对象,它控制与主题相关的安全操作。
Realm:桥梁。由框架提供,也可以自定义。负责访问数据安全。它是安全与数据之间的桥,它封装了比如DAO的配置信息,可以指定连接的数据源,也可使用其它的认证方式,如LDAP等。
详细架构图如下