您的当前位置:首页shiro 学习之它是干嘛的

shiro 学习之它是干嘛的

2024-12-14 来源:哗拓教育

shiro 的确是个很简单的安全框架,是个很好的轮子,重复造轮子是可耻的,所以就好好学习如何使用和扩展轮子,发挥它的价值。

shiro 的是干嘛的(引用官网)

Apache Shiro是一个强大而灵活的开源安全框架,可以干净地处理身份验证,授权,企业会话管理和加密。

以下是Apache Shiro可以做的一些事情:

  • 验证用户验证他们的身份

  • 为用户执行访问控制,如:

    • 确定用户是否被分配了一定的安全角色
    • 确定用户是否被允许做某事
  • 在任何环境中使用Session API,即使没有Web或EJB容器。

  • 在身份验证,访问控制或会话生命周期内对事件作出反应。

  • 聚合1个或更多的用户安全数据数据源,并将其全部显示为单个复合用户视图。

  • 启用单点登录(SSO)功能

  • 为用户关联启用“记住我”服务,无需登录

Shiro尝试为所有应用程序环境(从最简单的命令行应用程序到最大的企业应用程序)实现这些目标,而不强制依赖于其他第三方框架,容器或应用程序服务器。
当然,该项目旨在尽可能地融入这些环境,但它可以在任何环境中开箱即用。

shiro 功能(引用官方)

image.png

Shiro针对Shiro开发团队所称的“应用程序安全的四个基石” - 认证,授权,会话管理和加密:
认证(Authentication):登录,证明用户是谁的行为。
授权(Authorization):访问控制的过程,即确定“谁可以访问”什么“。
会话管理(Session Management):即使在非Web或EJB应用程序中也可以管理用户特定的会话。
密码学(Cryptography):使用加密算法保持数据安全性,同时易于使用。

核心架构

image.png
  • Subject:与系统交互的实体,可以使用户,也可以是其他子系统。
  • SecurityManager:是 shiro 的核心,包裹住所有服务,相当于大容器,协调这些服务一起工作。
  • Authenticator :用户认证。
    • Authentication Strategy :认证策略,如果配置多个 realm,用这个管理。
  • Authorizer:权限认证。
  • SessionManager:回话管理。
    • SessionDAO :会话管理的 dao,负责操作。
  • CacheManager:缓存管理。
  • Cryptography :密码,各种加密操作。
  • Realms :Shiro与应用程序的安全数据之间的“桥”或“连接器”,这里是负责验证密码和权限的入口。

工作流程

image.png

大致的工作流程是这样的:

  1. 调用登录方法
  2. 通过SecurityManager进入 realm 中进行判断权限和登录认证
  3. 在 realm 中调用dao 层查询数据库
  4. 获取用户数据
  5. realm 包装原始数据传入SecurityManager。通过SecurityManager调用认证方法,根据login 传入的 token 和 realm 返回的用户真实数据进行比对是否正确。如果不正确抛出各种异常,比如未知用户异常,密码错误,登录次数过多异常等。
  6. 根据返回的异常,各种 try..catch..,没有异常返回,则表示登录成功,反之返回前端 catch 结果。

自学笔记,如果错误,请评论指正

显示全文