Shiro工作原理的解析 - 极悦
首页 课程 师资 教程 报名

Shiro工作原理的解析

  • 2022-07-18 12:19:26
  • 1587次 极悦

Java教程中,大家会学到shiro框架,Apache Shiro是一个强大而灵活的开源安全框架,它能够干净利落地处理身份认证、授权、企业会话管理和加密。相比spring security框架更简单灵活,spring security对spring依赖较强。shiro可以实现web系统、c/s、分布式等系统权限管理。

Shiro完整架构图,如下图:

核心组件:

Subject:主体,即当前操作用户

SecurityManager:安全管理器,它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务

Realm:领域,充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息

Authenticator:认证器,AuthenticationStrategy如果存在多个realm,则按着具体的策略进行登录控制,例如:如果有一个realm成功即可登录、必须所有realm都成功才能登录等

Authorizer:授权器,决定subject能拥有什么样角色或者权限。

SessionManager:session管理器,创建和管理用户session。通过设置这个管理器,shiro可以在任何环境下使用session。

CacheManager:缓存管理器,可以减少不必要的后台访问。提高应用效率,增加用户体验。

Cryptography:Shiro的api大幅度简化java api中繁琐的密码加密。

Shiro认证流程:

subject(主体)请求认证,调用subject.login(token)

SecurityManager (安全管理器)执行认证

SecurityManager通过ModularRealmAuthenticator进行认证。

ModularRealmAuthenticator将token传给realm,realm根据token中用户信息从数据库查询用户信息(包括身份和凭证)

realm如果查询不到用户给ModularRealmAuthenticator返回null,ModularRealmAuthenticator抛出异常(用户不存在)

realm如果查询到用户给ModularRealmAuthenticator返回AuthenticationInfo(认证信息)

ModularRealmAuthenticator拿着AuthenticationInfo(认证信息)去进行凭证(密码)比对。如果一致则认证通过,如果不致抛出异常(凭证错误)。

Shiro授权流程:

对subject进行授权,调用方法isPermitted("*")或者hasRole("*")

SecurityManager执行授权,通过ModularRealmAuthorizer执行授权

ModularRealmAuthorizer执行realm(自定义的CustomRealm)从数据库查询权限数据调用realm的授权方法:doGetAuthorizationInfo

realm从数据库查询权限数据,返回ModularRealmAuthorizer

ModularRealmAuthorizer调用PermissionResolver进行权限串比对

如果比对后,isPermitted中"permission串"在realm查询到权限数据中,说明用户访问permission串有权限,否则没有权限,抛出异常。

以上就是关于“Shiro工作原理的解析”的介绍,大家如果对此比较感兴趣,想了解更多相关知识,不妨来关注一下极悦的Shiro入门视频,里面的课程内容由浅到深,通俗易懂,适合小白学习,希望对大家能够有所帮助。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交