Apache Shiro 是一个功能强大且易于使用的Java安全框架,为开发人员提供了一种直观而全面的身份验证,授权,加密和会话管理解决方案
借助Shiro易于理解的API,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。
Apache Shiro是一个具有许多功能的综合应用程序安全框架
提供了四大基本安全功能:
- 身份验证 - 证明用户身份,通常称为用户“登录”。
- 授权 - 访问控制
- 密码学 - 保护或隐藏窥探数据的数据
- 会话管理 - 每用户时间敏感状态
还有其他功能可以在不同的应用程序环境中支持和强化这些问题,尤其是:
- Web支持(Web Support):Shiro的Web支持API可帮助轻松保护Web应用程序。
- 缓存(Caching):缓存是Apache Shiro API中的第一层公民,可确保安全操作保持快速高效。
- 并发(Concurrency):Apache Shiro支持具有并发功能的多线程应用程序。
- 测试(Testing):存在测试支持以帮助您编写单元和集成测试,并确保您的代码按预期受到保护。
- “运行方式”(Run As):允许用户假定其他用户的身份(如果允许)的功能,有时在管理方案中很有用。
- “记住我”(Remember Me):记住用户在会话中的身份,因此他们只需要在必要时登录。
Shiro主要框架:
核心概念:
Subject:
主体,代表了当前“用户”,与当前应用交互的都是Subject
所有Subject 都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager
SecurityManager
安全管理器,即所有与安全有关的操作都会与SecurityManager交互,管理着所有Subject
是Shiro的核心
Realms
域,Shiro从Realm获取安全数据(如用户、角色、权限)
SecurityManager要验证用户身份,需要从Realm获取相应的用户进行比较以确定用户身份是否合法。
进行验证用户是否能进行操作需要从Realm得到用户相应的角色/权限
应用过程:
应用代码通过Subject来进行认证和授权,将Subject委托给SecurityManager;
给Shiro的SecurityManager注入Realm,让SecurityManager能得到合法的用户及其权限进行判断