授权即是访问控制,是对资源访问管理过程。它将判断用户在应用程序中是否对资源有相应的访问权限。比如:判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限,以及是否拥有打印的权限等等。
授权有三个核心元素:权限,角色和用户。
1权限
在ApacheShiro中权限是安全机制中最核心的元素。它在应用程序中明确地声明了被允许的行为,一个格式良好的权限声明可以清晰地表达出用户与资源交互时拥有的权限。
权限声明的一些例子:
l打开一个文件;
l查看'/user/list'网页;
l打印文档;
l删除用户'jsmith'。
大多数资源都支持典型的CRUD(创建,读取,更新,删除)操作,但任何对特定资源有意义的行为都是可以的。最小的权限声明是基于资源和行为的。
这里最重要的认识是权限声明没有谁可以执行此行为,许可声明仅能够反映行为(与资源类型相关的行为)。它们不反映是谁能够执行这样的行为。
定义用户被允许做什么(权限),是一种以某种方式给用户分配权限的操作。这是由应用程序自己决定的,通常在不同的应用程序间变化很大。比较常见的方法有将权限集合到一个角色中,然后将角色与一个或多个用户对象相关联。或者某些应用程序可以有一组可以被分配一个角色的用户组,建立的关联意味着该组中的所有用户都隐式地获得了该角色的权限。如何授予用户权限可以有很多变化——应用程序决定如何基于应用的要求来建模。
2角色
角色是一个命名的实体,通常代表一组行为或职责。这些行为演化为你在一个应用系统中能或者不能做的事情。角色通常是分配给用户的,因此,通过分配用户能够“做”的事情可以归属于各种角色。
在Shiro中支持两种类型的角色:
1、隐式角色
传统的方式,一个角色代表着一系列的操作,当需要对某一操作进行授权验证时,只需判断是否是该角色即可。行为已被一个单独的名字所蕴含。这种角色权限相对简单、模糊,不利于扩展。,隐式角色可能会增加许多软件的维护和管理问题。
2、显式角色
一个显式角色本质上是一个授权声明的命名集合。授权验证时,需要判断当前角色是否拥有该权限。这种角色权限可以对该角色进行详细的权限描述,适合更复杂的权限设计。Shiro团队提倡使用权限和显式角色,而不是陈旧的隐式方法。
3用户
用户实质上是指与应用程序有关的人。Subject是Shiro中“用户”的概念。
允许用户(Subjects)在你的应用程序中执行某些操作,是通过让他们与角色相关联或是直接授予权限。你的应用程序的数据模型定义了Subject是如何被允许做某事或不允许做某事的。
例如,在你的数据模型中,你有一个实际的User类,在授权时你可以直接分配权限给User实例。或者,你只分配权限给角色,然后分配角色给用户,通过关联,让用户“延伸”地拥有某个权限。或者你用"Group"的概念来代替这些东西。这些都随便你——根据你自己的应用程序来定义。
你自己的数据模型定义授权究竟是如何工作的。Shiro依靠Realm来实现转换你的数据模型,使其细节关联到一种Shiro能够理解的格式。
分享到:
相关推荐
Apache Shiro 是一个框架,可用于身份验证和授权。Apache Shiro的教程(PDF),相关jar包,源码等。
Apache Shiro。 官网 Apache Shiro API。 Apache Shiro开发文档。
Apache shiro 标签授权,介绍Apache shiro 标签授权的多种形式。
Apache Shiro中文版使用手册!
Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。 Apache Shiro 的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框架...
apache shiro 实例 apache shiro 实例
Apache_Shiro_使用手册(一)Shiro架构介绍
apache shiro 管理用户权限与数据库交互
Apache shiro 1.13.0源码 https://shiro.apache.org/
Shiro 是一个 Apache Incubator 项目,旨在简化身份验证和授权。在本文中,了解 Apache Shiro 并通过示例来在一个 Groovy web 应用程序中尝试使用 Shiro 进行身份验证和授权
采用SpringBoot + Apache Shiro + Mybatis Plus + Thymeleaf 实现的内容管理系统(附带权限管理),是搭建博客、网站的不二之选。 技术栈:Spring Boot、Apache Shiro、MyBatis-Plus、Alibaba Druid、Redis、MySQL、...
Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。 使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
Apache shiro1.2.4反序列化漏洞介绍 Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理。Apache Shiro框架提供了记住我(RememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次...
本系统(基于SpringBoot+MyBatis+Apache Shiro+Bootstrap+Thymeleaf) 可用于开发所有企业级WEB应用系统(如:各种后台管理系统、CRM、ERP、CMS、OA、博客、论坛等...)。响应式布局,支持大部分浏览器(如:IE9+...
springboot、shiro、mybatis、mybatis plus、mysql、thymeleaf、 3、实现功能:登陆认证、密码加密、权限授权等 4、优点:快速上手、全面支持验证、授权、加密和会话、灵活自定义设计、支持web环境、可以无缝集成...
Apache Shiro(发音为“shee-roh”,日语“堡垒(Castle)”的意思)是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业...
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
spring mvc、apache shiro、mysql 框架搭建,基于maven构建
apache shiro轻量级的安全认证授权框架让你快速搭建中下型企业安全认证模块
积分最低,Spring MVC+Mybatis+Ehcache+Apache Shiro+Bootstrap整合开发java仓库管理系统源码 开发环境:Eclipse ,JDK 1.8 ,Tomcat7 技术选型 后端技术 SpringMVC MVC框架 Spring Framework 容器 Apache ...