Shiro内置过滤器详解:认证与授权流程揭秘

需积分: 0 1 下载量 117 浏览量 更新于2024-08-17 收藏 571KB PPT 举报
Shiro是一个强大的企业级安全框架,用于实现身份验证、授权和会话管理等功能。本文档详细介绍了Shiro中的内置过滤器的使用方法,以及其核心组件和认证过程。 首先,Shiro的核心组件包括Subject(当前操作用户)、SecurityManager(安全管理器)和Realm(存储用户和权限信息的接口)。Subject是Shiro中的主体,代表正在执行操作的用户,它通过SecurityManager进行安全管理服务的调用。SecurityManager则是整个框架的核心,采用Facade模式,封装了其他组件的实例,如Authenticator(认证)、Authorizer(授权)和SessionManager(会话管理)等。 架构图展示了Shiro的完整结构,其中Authenticator负责验证用户的凭证,如用户名和密码,而Authorizer则负责根据用户的权限决定他们是否可以访问特定资源。SessionManager管理会话状态,CacheManager则提供了缓存支持,提高系统的性能。 Shiro的认证过程分为以下几个步骤: 1. 应用程序创建一个AuthenticationToken(包含用户信息),并通过Subject的login方法开始认证流程。 2. DelegatingSubject(Shiro默认的Subject实现)将请求传递给SecurityManager,调用login方法。 3. SecurityManager委托给ModularRealmAuthenticator进行实际的认证。这个Authenticator可以处理一个或多个 Realm,实现了插件式的认证机制。 4. 如果配置了多个Realm,AuthenticationStrategy会按策略依次验证每个Realm,如果有多个 Realm 配置,则按照预定义的顺序或策略执行认证。 5. 如果只有一个Realm,它会被直接调用,无需额外的认证策略。 内置过滤器部分,如rest和port过滤器,允许根据HTTP请求的方法(如GET、POST)和端口号进行特定的授权。例如,rest[user]规则表明只有当请求路径以"/admins/user/"开始时,且方法与"user"相关的才会进行authc(认证)检查;而port过滤器则可以根据请求的实际端口动态调整跳转URL。 了解和掌握这些内置过滤器对于有效管理Shiro的安全策略至关重要,它们能帮助开发人员精细地控制不同请求的权限和行为。通过合理配置这些过滤器,可以确保系统的安全性,并为用户提供个性化的访问体验。