前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shiro 框架简单介绍

Shiro 框架简单介绍

作者头像
全栈程序员站长
发布2022-08-04 18:40:43
7550
发布2022-08-04 18:40:43
举报

大家好,又见面了,我是你们的朋友全栈君。

Shiro介绍

Shiro 是 JAVA 权限框架,较之 JAAS 和 Spring Security,Shiro 在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势。 Shiro 是一个强大而灵活的开源安全框架,能够非常清晰的处理认证授权管理会话以及密码加密。 如下是它所具有的特点:

  • 易于理解的 Java Security API;
  • 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等);
  • 对角色的简单的签权(访问控制),支持细粒度的签权;
  • 支持一级缓存,以提升应用程序的性能;
  • 内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境;
  • 异构客户端会话访问;
  • 非常简单的加密 API;
  • 不跟任何的框架或者容器捆绑,可以独立运行。

Shiro 主要有四个组件

SecurityManager

典型的 Facade,Shiro 通过它对外提供安全管理的各种服务。

Authenticator

对“Who are you ?”进行核实。通常涉及用户名和密码。 这 个组件负责收集 principals 和 credentials,并将它们提交给应用系统。如果提交的 credentials 跟应用系统中提供的 credentials 吻合,就能够继续访问,否则需要重新提交 principals 和 credentials,或者直接终止访问。

Authorizer

身份份验证通过后,由这个组件对登录人员进行访问控制的筛查,比如“who can do what”, 或者“who can do which actions”。Shiro 采用“基于 Realm”的方法,即用户(又称 Subject)、用户组、角色和 permission 的聚合体。

Session Manager

这个组件保证了异构客户端的访问,配置简单。它是基于 POJO/J2SE 的,不跟任何的客户端或者协议绑定。

shiro的内置过滤器:

Shiro内置的FilterChain 授权过滤器:perms(指定资源需要哪些权限才可以访问),Roles, ssl,rest, port 认证过滤器:anon(不认证也可以访问),authcBasic, authc(必须认证后才可访问),user

FilterName

Class

anon

org.apache.shiro.web.filter.authc.AnonymousFilter

authc

org.apache.shiro.web.filter.authc.FormAuthenticationFilter

authcBasic

org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter

perms

org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter

port

org.apache.shiro.web.filter.authz.PortFilter

rest

org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter

roles

org.apache.shiro.web.filter.authz.RolesAuthorizationFilter

ssl

org.apache.shiro.web.filter.authz.SslFilter

user

org.apache.shiro.web.filter.authc.UserFilter

shiro各级关联

shiro三大核心模块:Subject(用户)、SecurityManager(框架心脏)、Realm(Shiro与应用安全数据间的“桥梁”) SecurityManager去管理cacheManager缓存和sessionManager会话,sessionManager再去管理sessionDAO会话DAO 和sessionIdCookie会话ID生成器和sessionValidationScheduler会话验证调度器,cacheManager通过使用Ehcache实现,Realm通过自己自定义或者其他方式的权限存储来实现,比如登录等.

使用统一数据访问层,通过编写实体类,编写Repository接口,最后通过配置文件实现 Repository是标识,spring自动扫描,CrudRepository继承Repository实现curd,PagingAndSortingRepository继承CrudRepository实现分页排序,JpaRepository继承PagingAndSortingRepository实现JPA规范相关的方法,JpaSpecificationExecutor不属于Repository,比较特殊,它去实现一组JPA Criteria查询相关的方法。

  • Realm的作用: 身份验证(getAuthenticationInfo 方法)验证账户和密码,并返回相关信息 权限获取(getAuthorizationInfo 方法) 获取指定身份的权限,并返回相关信息 令牌支持(supports方法)判断该令牌(Token)是否被支持

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106529.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年4月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Shiro介绍
  • Shiro 主要有四个组件
    • SecurityManager
      • Authenticator
        • Authorizer
          • Session Manager
          • shiro的内置过滤器:
          • shiro各级关联
          相关产品与服务
          对象存储
          对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档