Apache Shiro 是一个功能强大且易于使用的Java安全框架,为开发人员提供了一种直观而全面的身份验证,授权,加密和会话管理解决方案

借助Shiro易于理解的API,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。

Apache Shiro是一个具有许多功能的综合应用程序安全框架

Apache Shiro_会话管理

提供了四大基本安全功能:

  • 身份验证 - 证明用户身份,通常称为用户“登录”。
  • 授权 - 访问控制
  • 密码学 - 保护或隐藏窥探数据的数据
  • 会话管理 - 每用户时间敏感状态

还有其他功能可以在不同的应用程序环境中支持和强化这些问题,尤其是:

  • Web支持(Web Support):Shiro的Web支持API可帮助轻松保护Web应用程序。
  • 缓存(Caching):缓存是Apache Shiro API中的第一层公民,可确保安全操作保持快速高效。
  • 并发(Concurrency):Apache Shiro支持具有并发功能的多线程应用程序。
  • 测试(Testing):存在测试支持以帮助您编写单元和集成测试,并确保您的代码按预期受到保护。
  • “运行方式”(Run As):允许用户假定其他用户的身份(如果允许)的功能,有时在管理方案中很有用。
  • “记住我”(Remember Me):记住用户在会话中的身份,因此他们只需要在必要时登录。

Shiro主要框架:

Apache Shiro_缓存_02

核心概念:

  Subject:

     主体,代表了当前“用户”,与当前应用交互的都是Subject

     所有Subject 都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager

  SecurityManager

    安全管理器,即所有与安全有关的操作都会与SecurityManager交互,管理着所有Subject

    是Shiro的核心

  Realms

    域,Shiro从Realm获取安全数据(如用户、角色、权限)

    SecurityManager要验证用户身份,需要从Realm获取相应的用户进行比较以确定用户身份是否合法。

    进行验证用户是否能进行操作需要从Realm得到用户相应的角色/权限

Apache Shiro_apache_03

应用过程:

应用代码通过Subject来进行认证和授权,将Subject委托给SecurityManager;

给Shiro的SecurityManager注入Realm,让SecurityManager能得到合法的用户及其权限进行判断

 参考 http://shiro.apache.org/introduction.html