Shiro 框架简单介绍

Shiro 框架简单介绍Shiro 框架简单介绍

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

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.net/106529.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 两个栈实现一个队列

    用栈实现队列1、栈的特点栈的特点是先进后出,进出元素都是在同一端(栈顶)。入栈:出栈:2、队列的特点队列的特点是先进先出,出入元素是在不同的两端(队头和队尾)。入队:出队:3、两个栈实现队列我们拥有两个栈,可以让其中一个栈作为队列的入口,负责插入新元素;另一个栈作为队列的出口,负责移除老的元素。队列的主要操作无非有两个:入队和出队。在…

    2022年4月4日
    55
  • 关于so文件你需要知道的知识「建议收藏」

    关于so文件你需要知道的知识「建议收藏」1.什么是CPU架构及ABIAndroid系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7(从2010年起),x86(从2011年起),MIPS(从2012年起),ARMv8,MIPS64和x86_64(从2014年起),每一种都关联着一个相应的ABI。应用程序二进制接口(ApplicationBinaryInterface)定义了二进制文件(尤其是.so文件)如何运行在…

    2026年1月23日
    8
  • c++大作业–学籍管理系统–

    c++大作业–学籍管理系统–

    2021年11月30日
    60
  • 2020=1024+996,程序员本命年,去外包公司公司要小心了。

    2020=1024+996,程序员本命年,去外包公司公司要小心了。2020第一天,我从外包公司离职了,过来人的经验之谈,外包公司本身就是赚差价的,可以去,但是需要谨慎》》》

    2022年7月2日
    43
  • 测试bolgo

    测试bolgo

    2021年10月25日
    57
  • 【DockerCE】使用Portainer-ce管理监控docker容器实例

    【DockerCE】使用Portainer-ce管理监控docker容器实例PortainerCE CommunityEdi 是 Portainer 官方发布的开源 免费产品 用于服务器上运行的 docker 相关资源的展示 docker 容器实例的运行监控 日志展示 资源使用等 docker 容器实例控制等 此外 官方还有一个收费的商业版本 PortainerBE BusinessEdit 资源展示 运行监控 gt 启动日志 gt 容器资源使用情况容器实例的控制 在已经安装 运行了 do

    2025年11月19日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号