Shiro授权

一、授权的基本概念

授权,也叫访问控制,是指在应用中控制谁能访问哪些资源(如访问页面、编辑数据、页面操作等)。在Shiro中,授权涉及几个关键对象:主体(Subject)、资源(Resource)、权限(Permission)和角色(Role)。

  1. 主体(Subject):访问应用的用户,在Shiro中使用Subject代表该用户。用户只有授权后才允许访问相应的资源。
  2. 资源(Resource):在应用中用户可以访问的URL,比如访问JSP页面、查看/编辑某些数据、访问某个业务方法、打印文本等都是资源。用户只有授权后才能访问。
  3. 权限(Permission):安全策略中的原子授权单位,通过权限可以表示在应用中用户有没有操作某个资源的权力。例如,访问用户列表页面查看/新增/修改/删除用户数据(即很多时候都是CRUD式权限控制)等。Shiro支持粗粒度权限(如用户模块的所有权限)和细粒度权限(操作某个用户的权限,即实例级别的)。
  4. 角色(Role):权限的集合,一般情况下会赋予用户角色而不是权限,这样用户可以拥有一组权限,赋予权限时比较方便。典型的如项目经理、技术总监、CTO、开发工程师等都是角色,不同的角色拥有一组不同的权限。

二、Shiro授权的方式

Shiro提供了多种授权方式,以满足不同的应用需求。以下是几种常见的授权方式:

  1. 基于角色的授权(Role-Based Authorization):通过给用户分配不同的角色,来控制用户对资源的访问权限。例如,可以定义一个“admin”角色,只有拥有该角色的用户才能执行某些操作。
  2. 基于权限的授权(Permission-Based Authorization):通过给用户分配具体的权限,来控制用户对资源的访问权限。例如,可以定义一个“write”权限,只有拥有该权限的用户才能进行写操作。
  3. 自定义授权(Custom Authorization):Shiro框架允许用户通过自定义的方式进行授权。可以实现自己的授权逻辑,判断用户是否有权限执行某个操作。
  4. 通配符授权(Wildcard Authorization):Shiro框架支持使用通配符进行授权。可以使用通配符匹配多个角色或权限。例如,可以使用“role:*”表示拥有任何角色的用户都有权限。
  5. 基于资源的授权(Resource-Based Authorization):Shiro框架支持基于资源的授权,也称为ACL(Access Control List)授权。通过给每个资源分配访问权限,可以精细地控制用户对不同资源的访问。

三、Shiro授权的执行流程

Shiro授权的执行流程通常包括以下几个步骤:

  1. 调用Subject接口:首先调用Subject的isPermitted或hasRole接口进行权限或角色检查。
  2. 委托给SecurityManager:Subject接口会委托给全局唯一的SecurityManager进行权限验证。
  3. 委托给Authorizer:SecurityManager会进一步委托给Authorizer进行真正的授权判断。
  4. Permission Resolver转换:如果调用的是isPermitted接口,Authorizer会首先通过Permission Resolver把字符串转换成相应的Permission实例。
  5. 获取角色/权限信息:在进行授权之前,Authorizer会调用相应的Realm获取Subject相应的角色/权限信息。
  6. 匹配角色/权限:Authorizer会判断Realm的角色/权限是否和传入的匹配。如果有多个Realm,会委托给ModularRealmAuthorizer进行循环判断。
  7. 返回结果:如果匹配成功,则返回true表示授权通过;否则返回false表示授权失败。

四、Shiro授权的示例代码

以下是一个简单的Shiro授权示例代码,展示了如何通过编程式、注解式和标签式三种方式进行授权检查:

  1. 编程式授权
    if(subject.hasRole("admin")){  
        // 有权限执行后续操作  
    }else{  
        // 无权限执行后续操作  
    }
  2. 注解式授权
    @RequiresRoles("admin")  
    public void doSomething(){  
        // 只有拥有admin角色的用户才能执行此方法  
    }
  3. 标签式授权(在JSP/GSP页面中):
    <shiro:hasRole name="admin">  
        <!-- 有权限显示的内容 -->  
    </shiro:hasRole>

    术语简介

一、计算机与信息技术

  1. Apache Shiro

    • 定义:Apache Shiro是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。
    • 关键组件:包括Subject(主体)、SecurityManager(安全管理器)、Realm(域)等。
    • 应用:广泛应用于Java Web应用和其他需要安全控制的领域。
  2. 认证(Authentication)

    • 定义:验证用户身份的过程,即证明某人确实是他所声称的那个人。
    • 过程:通常涉及用户提交凭证(如用户名和密码),系统验证这些凭证的有效性。
    • 应用:在登录系统、访问控制等场景中广泛应用。
  3. 授权(Authorization)

    • 定义:决定用户是否有权访问特定资源或执行特定操作的过程。
    • 关键对象:包括主体(Subject)、资源(Resource)、权限(Permission)和角色(Role)。
    • 应用:用于控制用户对应用中的页面、数据、操作等的访问权限。
  4. 加密(Cryptography)

    • 定义:使用密码学算法对数据进行加密和解密的过程。
    • 目的:保护数据的安全性,防止未经授权的访问或篡改。
    • 应用:在数据传输、存储等场景中广泛应用。
  5. 哈希(Hash)

    • 定义:一种对数据进行单向、不可逆的运算过程,通常用于生成数据的唯一标识。
    • 特点:哈希值具有固定长度,且对于不同的输入数据,哈希值通常不同。
    • 应用:在密码存储、数据完整性校验等场景中广泛应用。

二、商业与管理

  1. 市场营销(Marketing)

    • 定义:企业为了满足消费者需求,通过市场研究、产品开发、定价、促销和分销等活动来创造、传播和传递价值给顾客的过程。
    • 关键要素:包括产品、价格、促销和地点(分销)。
    • 应用:在各行各业中,市场营销都是企业获取竞争优势的重要手段。
  2. 供应链管理(Supply Chain Management, SCM)

    • 定义:对企业内外部资源进行优化配置,以满足客户需求的过程。它涵盖了从原材料采购、生产制造、物流配送到售后服务的全过程。
    • 关键要素:包括供应商、制造商、分销商、零售商和最终用户等。
    • 应用:在制造业、零售业等行业中,供应链管理对于提高效率和降低成本至关重要。
  3. 风险管理(Risk Management)

    • 定义:识别、评估和控制可能影响组织目标实现的风险的过程。
    • 关键步骤:包括风险识别、风险评估、风险控制和风险监控等。
    • 应用:在金融、保险、制造业等多个行业中,风险管理都是确保组织稳健运营的重要手段。

三、科学与工程

  1. 量子力学(Quantum Mechanics)

    • 定义:描述微观物质世界(如原子和亚原子粒子)行为的基础物理学理论。
    • 关键概念:包括波粒二象性、不确定性原理、量子态等。
    • 应用:在半导体技术、量子计算、量子通信等领域具有广泛应用。
  2. 人工智能(Artificial Intelligence, AI)

    • 定义:研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
    • 关键技术:包括机器学习、深度学习、自然语言处理等。
    • 应用:在智能家居、自动驾驶、医疗诊断等多个领域具有广泛应用前景。

授权流程

一、身份认证

  1. 用户提交凭证:用户需要向系统提交身份验证的凭证,如用户名和密码、数字证书、生物识别信息等。
  2. 系统验证凭证:系统会根据用户提交的凭证,通过相应的验证机制(如数据库查询、加密算法比对等)来判断用户的身份是否合法。
  3. 生成会话信息:如果用户的身份被验证为合法,系统会为用户生成一个唯一的会话ID或令牌(Token),并将会话信息与用户身份关联起来,以便在后续的请求中识别用户。

二、权限获取

  1. 查询权限信息:在身份验证成功后,系统会根据用户的身份(如用户名、角色等)去查询该用户所拥有的权限信息。
  2. 构建权限对象:系统会将查询到的权限信息构建成相应的权限对象,这些对象通常包含了用户能够访问的资源列表、能够执行的操作列表等。

三、授权判断

  1. 用户发起请求:用户在系统中发起对某个资源或操作的请求。
  2. 系统检查权限:系统会根据用户发起的请求,以及用户当前会话中的权限信息,来判断用户是否有权访问该资源或执行该操作。
  3. 返回授权结果:系统会将授权判断的结果返回给用户或应用程序。如果用户有权限,则允许其访问资源或执行操作;如果用户无权限,则拒绝其访问或执行,并可能给出相应的提示信息。

四、会话管理

  1. 会话维护:在用户与系统的交互过程中,系统会维护用户的会话信息,包括会话ID、会话有效期、用户状态等。
  2. 会话过期处理:如果用户的会话过期(如长时间未操作、会话超时等),系统会要求用户重新进行身份验证,以恢复会话。
  3. 会话注销:当用户主动退出系统或会话结束时,系统会注销用户的会话信息,以确保系统的安全性。

五、日志记录与审计

  1. 记录日志:在授权流程的各个阶段,系统都会记录相应的日志信息,包括用户身份验证的时间、权限查询的结果、授权判断的结果等。
  2. 审计分析:系统管理员或安全人员可以通过查看日志信息,对系统的授权流程进行审计和分析,以确保系统的安全性和合规性。

授权方式

一、按领导风格划分的授权方式

  1. 一般授权(柔性授权)

    • 特点:领导者对下属的工作仅做一般的指点,并没有给下属具体的工作权限范围,也没有通过正式的文件规定下属的决策内容和方式。在实际的管理过程中,经常让下属以自己的名义和权限从事管理活动。
    • 优点:灵活性高,能够适应快速变化的环境。
    • 缺点:可能导致下属权限不明确,决策效率较低。
  2. 特定授权(刚性授权)

    • 特点:领导者通过正式的文件,对所授权力、责任、完成任务的要求、时间等均有明确的规定和交代,被授权者必须严格遵守,不得违背和逾越。
    • 优点:权限明确,责任清晰,有利于提高工作效率和保证工作质量。
    • 缺点:灵活性较差,难以适应复杂多变的环境。
  3. 积极授权

    • 特点:领导者在对下属精心考评以后,在充分信任的基础上进行授权。并且允许被授权的下属完全由其自己决定行动的方案和创造条件。
    • 优点:能够激发下属的积极性和创造力,提高工作效率。
    • 缺点:需要领导者对下属有深入的了解和信任,否则可能导致授权失败。
  4. 消极授权

    • 又可以分为惰性授权和被迫授权。
      • 惰性授权:领导者在授权的同时缺乏对被授权者必要的监管、控制,放任自流。
      • 被迫授权:领导者由于各种原因不得不违心地授权。这种违心的原因有的是由于对下属能力的不信任,有的是由于怕给自己树立竞争者,有的是出于强烈地想控制他人的欲望等。
    • 缺点:容易导致授权失控,影响工作效率和质量。

二、按授权渠道划分的授权方式

  1. 口头授权

    • 特点:通过口头方式将权力授予下属。
    • 优点:方便快捷,适用于紧急或临时性的授权。
    • 缺点:缺乏书面记录,可能导致授权内容不明确或产生争议。
  2. 书面授权

    • 特点:通过正式的文件或协议将权力授予下属。
    • 优点:具有法律效力,授权内容明确具体,有利于保障双方的权益。
    • 缺点:相对繁琐,需要花费一定的时间和精力来准备和签署文件。
  3. 单方授权

    • 特点:由一方单独进行授权,无需另一方同意或确认。
    • 优点:操作简单,适用于一方对另一方有绝对控制权的情况。
    • 缺点:可能导致授权不公平或不合理,影响双方的关系和合作。
  4. 多方授权

    • 特点:涉及多个主体之间的授权关系,需要各方共同协商和确认。
    • 优点:能够平衡各方的利益和需求,促进合作和共赢。
    • 缺点:操作复杂,需要花费较多的时间和精力来协商和达成一致意见。

三、其他常见的授权方式(以IP授权为例)

  1. 衍生品授权

    • 特点:将IP的元素直接用于实物商品上。
    • 应用:如电影、动漫角色的周边商品等。
  2. 外包装授权

    • 特点:仅将IP元素用于礼盒外包装或物流外包装上,产品本身并不使用IP元素。
    • 应用:如食品、化妆品等产品的包装设计。
  3. 礼赠品授权

    • 特点:将IP元素用于赠品上,赠品通常是非卖品。
    • 应用:如快餐店的儿童套餐赠品等。
  4. 营销授权

    • 特点:将IP元素用于营销推广上,如营销海报、推广软文等。
    • 应用:品牌与IP方的合作推广等。
  5. 数字虚拟授权

    • 特点:将IP元素用于数字虚拟产品上,如表情包、壁纸等。
    • 应用:互联网平台的虚拟商品销售等。
  6. 改编授权

    • 特点:将IP改编成其他形式的内容,如动画、电影、游戏等。
    • 应用:小说IP改编成动画作品或电影等。
  7. 线下实体店授权

    • 特点:将IP元素用于线下实体店的布展和装饰中。
    • 应用:主题餐厅、主题咖啡厅等。
  8. 公共交通授权

    • 特点:将IP元素用于公共交通工具的外部涂装或内部装饰中。
    • 应用:公交车、地铁、飞机等交通工具的涂装和装饰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值