Shiro入门_会话管理

文章目录

Shiro简介

Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证、授权、加密和会话管理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro 要简单的多。本教程只介绍基本的 Shiro 使用,不会过多分析源码等,重在使用。

Shiro能做什么

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

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

  • 验证用户验证他们的身份
  • 为用户执行访问控制,如:
  • 确定用户是否被分配了一定的安全角色
  • 确定用户是否被允许做某事
  • 在任何环境中使用Session API,即使没有Web或EJB容器。
  • 在身份验证,访问控制或会话生命周期内对事件作出反应。
  • 聚合1个或更多的用户安全数据数据源,并将其全部显示为单个复合用户视图。
  • 启用单点登录(SSO)功能
  • 为用户关联启用“记住我”服务,无需登录

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

Shiro功能

Shiro入门_访问控制_02


Shiro针对Shiro开发团队所称的“应用程序安全的四个基石” - 认证,授权,会话管理和加密:

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

Shiro核心组件

三个核心组件:Subject, SecurityManager 和 Realms.

  • Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。
  • SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
  • Realm: Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。

Shiro核心架构

Shiro入门_应用程序_03

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

Shiro详细学习