解锁Apache Shiro:新手友好的安全框架指南(一)——整体架构与身份认证_apache shiro的配置包括安全管理器

本文是Apache Shiro安全框架的初学者指南,详细介绍了Shiro的架构,包括核心组件如Subject、SecurityManager、Authenticator、Authorizer等。文章通过实例演示了Shiro的身份认证流程,包括基于INI配置构建SecurityManager、收集用户凭证、多Realm认证序列等步骤,适合想要了解Shiro安全特性的开发者阅读。
摘要由CSDN通过智能技术生成

引言

Apache Shiro 是一个功能强大且易于使用的 Java 安全框架,它执行身份验证、授权、加密和会话管理,可用于保护任何应用程序——从命令行应用程序、移动应用程序到最大的 web 和企业应用程序。

Shiro 提供了应用程序安全 API 来执行以下方面:

  • Authentication(认证):验证用户身份,即用户登录。
  • Authorization(授权):访问控制
  • Cryptography(密码学):保护或隐藏私密数据
  • Session Management(会话管理):每个用户的时间敏感状态

本文作为 Shiro 指南的第一篇,重点介绍 Shiro 的整体架构认证功能。在本文的最后一章,我将编写一个案例串联本文讲述的知识点。

Shiro 整体架构

架构图

Shiro 的核心架构概念展示于下图,我将在随后介绍每个组件:
Shiro 架构

  • Subject:实体在安全领域的抽象,这个实体可以是用户、服务、定时任务等与软件存在交互的事物。
  • SecurityManager:在Shiro的整体架构中,SecurityManager是核心组件,它管理着所有与安全相关的操作。SecurityManager类似于Spring框架中的ApplicationContext,是 Shiro 功能的中心,协调着认证、授权、会话、缓存等不同组件。
  • Authenticator:当用户尝试登录时,该逻辑由Authenticator负责执行用户身份验证并对尝试结果进行响应。Authenticator与一个或多个存储相关用户/帐户信息的Realm协调,使用Realms对象获得的账户数据用于验证用户的身份。
  • Authorizer:负责应用程序中用户访问控制的组件,决定用户是否被允许执行某类操作。Authorizer 和 Authenticator 一样,需要访问后端数据源得到用户的角色与权限信息。
  • SessionManager:管理用户会话的组件,负责会话的创建、存储、生命周期、安全控制。SessionManager提供了一种机制来跨多个请求和交互维持用户状态,这对于构建需要身份验证和授权的复杂系统是至关重要的。
  • CacheManager:创建和管理Cache实例生命周期的组件。Shiro 在认证、授权与会话管理过程中,会访问多个后端数据源,缓存这些数据将提升系统性能。
  • Cryptography:Shiro 的 crypto 宝包含易于理解和使用的加密密码、哈希(又名摘要)和不同编解码器实现的表示。例如:Sha256Hash负责对原始密码执行散列操作,然后与数据库中存储的密码匹配。
  • Realm:Shiro 与应用安全数据之间的桥梁。用户登录认证和授权时,Shiro 需要访问账户信息,这一过程是通过查询为应用程序配置的一个或多个Realm实例实现。

术语解释

  • Subject:它代表应用程序用户的一个 安全特定视图(Security specific user view)。
    安全特定视图:从安全控制身份认证的角度对用户或实体的抽象表示。一个 Subject 实例代表一个与应用程序交互的实体,包括了这个用户的身份信息、角色、权限等。
    在 Shiro 中,Subject 不局限于人类用户,可以是任何与应用程序交互的实体,包括:

    • 19
      点赞
    • 16
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值