`
kong0itey
  • 浏览: 298979 次
社区版块
存档分类
最新评论

《Spring Security3》第五章第一部分翻译(重新思考应用功能和安全) (转载)

阅读更多

第五章   精确的访问控制

 

到目前为止,我们已经为 JBCP Pets 站点添加了用户友好的一些功能,包括自定义的登录页以及修改密码、 remember me 功能。

 

在本章中,我们将要学习规划应用安全的技术以及用户 / 组的划分。其次,我们学习两种实现精确访问控制 的实现方式——这会影响应用中页面的授权。然后,我们会了解 Spring Security 如何通过使用方法注解和 AOP 的方式来实现业务层安全。最后,我们将会了解通过基于注解的配置实现按照角色过滤集合数据这一比较有趣的功能。

在本章中,我们会学到:

l  规划 web 应用安全的基本技术和组管理,这会使用到现成的工具和批判思考( critical thinking );

l  基于用户请求的上下文,配置和实验在页面级别进行授权检查以显示内容的不同方式;

l  通过配置和代码注解 pre-authorization 的方式使得调用应用中关键部分是安全的;

l  几种实现方法级别安全的可选方式,并介绍各种方式的优劣;

l  通过使用方法级别的注解,实现基于 Collections Arrays 数据的过滤器。

 


 

因为本章涉及到的概念超过了前面的一些孤立技术点,为了扩大站点的范围在源代码上做了一定数量的修改,并将其分成了真正三层的系统。你可能对这些变化感兴趣,但是它们与 Spring Security 没有直接的关系,所以我们将会忽略这些修改的细节。当你发现本章的源代码总添加了许多的文件,不要被吓倒。

重新思考应用功能和安全

         现在,我们要再看一下 JBCP Pets 应用的授权模型和流程。我们感觉已经得到了一个很安全的应用,但是应用的流程并不特别适合与公开的电子商务站点。我们还需要做很多的事情,因为对应用中每个页面(除去登录界面)的请求,都需要用户有一个合法的账号并登录——这无助于用户的浏览和购买。

规划应用安全

         通常情况下,需要产品管理领域的人员和安全专员联合工程师来评估用户社区和需求的功能。规划过程——如果能够高效执行——使用工作表和图表来彻底分析应用包含的角色和组。我们会花一点时间简单介绍对 JBCP Pets 的扩展功能来阐明这个过程是如何进行的。在任何项目中对安全规划的思考过程将会对开发过程很有好处——尝试对你应用中的每个页面和业务服务构建安全状况。

规划用户角色

         对于 JBCP Pets ,我们将会使用下边的表格匹配用户分类到角色( Spring Security GrantedAuthority 值)中。它们中有一些是新的角色,用来对用户进行不同的分类。

用户分类

描述

角色

Guest

不是记住或认证过的用户

None (anonymous)

Consumer / Customer

用户已经建立的账号,在站点上可能已完成也可能未完成购买交易

ROLE_CUSTOMER

ROLE_USER

Customer w/

Completed Purchase

用户至少在站点上完成了一笔交易

ROLE_PURCHASER

ROLE_USER

Administrator

负责用户账号管理等功能的管理员

ROLE_ADMIN

ROLE_USER

Supplier

产品供货商,允许管理其产品目录

ROLE_SUPPLIER

ROLE_USER

使用这些声明的用户分类和角色,我们能够将角色粗略得匹配到站点的功能设计上。有很多方式能够完成这项任务——以下是我们在过去发现很有用的办法:

l  使用 Microsoft Visio 和韦恩图来标示功能和用户组的重叠交叉(我们在第二章: Spring Security 起步 中曾经使用过其很有限的功能)。这种技术对小型的应用和粗略的分析能够非常直观。

l  个性化的图表页面,并注明能够访问每个页面的用户分类和角色。尽管不能直接可视化的访问,但这种方式能够非常精确。我们将会在下面的章节阐述一个这样的例子。

l  使用便条和白板或草图板建模。在这种类型的练习中,产品的规划人员在白板上勾画出一些区域来代表不同的用户角色,并在白板的每个区域上添加便签以代表产品功能。

 

通常来说,使用非数字的方式进行安 全的初期规划是很容易的,因为经常见到组内讨论会产生对安全功能的较大修正,而使用非数字的工具很容易进行调整。典型情况下,这种层次的安全规划不会涉及 到单个页面的和页面中某些部分的层次,而是应用中的功能“块”(即应用整体上的安全功能规划——译者注)。

规划页面级权限

         下一层次的安全规划就是页面级元素的安全。首先,规划整个站点范围的页面特性是很重要的,这能够保证用户在使用可见功能并切换页面时,保证界面的一致性。大多数的站点已经有了整个站点层次的模板功能,最简单的就是 jsp:include 指令(正如我们在 JBCP Pets 中使用的),或者更复杂的,如 Apache Tiles 2

        

         页面级别的安全规划通常与站点的用户体验规划结合起来——很多公司使用 Microsoft Visio 或者 Adobe Dreamweaver 进行站点的低保真设计,或者使用更复杂的工具如 Axure RP 。不管使用什么工具,需要保证的是在规划安全相关的功能时要与站点的最初设计功能相融合。你的 UI 设计师或界面设计师可能会愿意讨论基于用户的角色,那些元素会显示或不显示。理解页面元素的可能选项能够使得好的 UI 规划人员设计出合理灵活的布局,从而保证不管用户是什么样的权限,页面都能展现得很好。

         【使用正确的工作工具。我有一个 UI 设计师朋友,他为 Visio 做了很棒的形状集合,这使我产生了很大的兴趣,这些通过 http://www.guuui.com/issues/02_07.ph 可以得到。对于熟悉 Visio 的人来说,这是一种不错的方式来开发精确、低保真的模型,对于这个工具许多人已经很了解。尽管现在没有兼容 Visio 的开源产品,类似的应用如 Dia (http://projects.gnome.org/dia/ ) OpenOffice Draw (http://www.openoffice.org/product/draw.html ) 对大多数的平台都是支持的。】

         一个注明了安全信息的 Visio 图可能会如下所示:



 可以看到我们并不需要很多安全相关信息的细节,但是这个图所表达的意思对于查看的每个人(即使不是技术人员)都很容易理解。

分享到:
评论

相关推荐

    springSecurity3中文文档

    第一章:一个不安全应用的剖析 第二章:springsecurity起步 第三章:增强用户体验 第四章:凭证安全存储 第五章:精确的访问控制 第六章:高级配置和扩展 第七章:访问控制列表(ACL) 第八章:对OpenID开放 第九章...

    spring security 参考手册中文版

    第一部分前言 15 1.入门 16 2.介绍 17 2.1什么是Spring Security? 17 2.2历史 19 2.3版本编号 20 2.4获得Spring安全 21 2.4.1使用Maven 21 Maven仓库 21 Spring框架 22 2.4.2 Gradle 23 Gradle存储库 23 使用Spring...

    SpringCloud视频教程全套百度网盘

    第4章 SpringSecurity安全详细讲解及应用 第5章 RabbitMQ高级消息的讲解及应用 第6章 ElasticSearch详细讲解及应用 第7章 Eureka分布式服务器的搭建 。。。。。。。。。 第15章 SpringCloud项目实战 。。。。。。。...

    Spring攻略PDF版

     第5章 动态代理和经典的Spring AOP   第6章 Spring 2.x AOP和AspectJ支持  第二部分 基础主题  第7章 Spring对JDBC的支持   第8章 Spring中的事务管理   第9章 Spring对ORM的支持   第10章...

    security:Spring Security 开发安全的REST服务 —— JoJozhai

    跟着学了两章后,发现还是少了点感觉,干脆自己重新码一遍吧 :beaming_face_with_smiling_eyes: 小目标 IDEA 构建 使用最新的 Spring 版本 Spring Security 开发安全的REST服务 视频来源: 视频作者: 章节目录和...

    Spring攻略中文版PDF

     第5章 动态代理和经典的Spring AOP   第6章 Spring 2.x AOP和AspectJ支持  第二部分 基础主题  第7章 Spring对JDBC的支持   第8章 Spring中的事务管理   第9章 Spring对ORM的支持   第10章...

    Spring攻略英文版(附带源码)

     第5章 动态代理和经典的Spring AOP   第6章 Spring 2.x AOP和AspectJ支持  第二部分 基础主题  第7章 Spring对JDBC的支持   第8章 Spring中的事务管理   第9章 Spring对ORM的支持   第10章 ...

    spring security 登录、权限管理配置

    5)匹配用户拥有权限和请求权限(MyAccessDecisionManager:decide),如果用户没有相应的权限, 执行第6步,否则执行第7步。 6)登录 7)验证并授权(MyUserDetailServiceImpl:loadUserByUsername) 内附完整数据库

    第 5-1 课:使⽤ Spring Boot Security 进⾏安全控制1

    (1)添加依赖: (2)配置文件 (3)创建页面 (4)添加访问入口 (5)添加 Spring Security 依赖 (6)进行分析

    Spring攻略(第二版 中文高清版).part1

    第5章 Spring Security 164 5.1 加强URL访问安全 165 5.1.1 问题 165 5.1.2 解决方案 165 5.1.3 工作原理 166 5.2 登录到Web应用 175 5.2.1 问题 175 5.2.2 解决方案 175 5.2.3 工作原理 175 5.3...

    Spring攻略(第三版)源代码

    Spring Recipes 3rd Edition Sources === These are the sources belonging to Spring Recipes 3rd Edition. Each chapter has its own sources and each chapter can contain multiple source snippets TOC --- ...

    Spring in Action(第2版)中文版

    第一部分spring的核心 第1章开始spring之旅 1.1spring是什么 1.2开始spring之旅 1.3理解依赖注入 1.3.1依赖注入 1.3.2di应用 1.3.3企业级应用中的依赖注入 1.4应用aop 1.4.1aop介绍 1.4.2aop使用 1.5小结...

    Spring in Action(第二版 中文高清版).part1

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP...

    Spring攻略(第二版 中文高清版).part2

    第5章 Spring Security 164 5.1 加强URL访问安全 165 5.1.1 问题 165 5.1.2 解决方案 165 5.1.3 工作原理 166 5.2 登录到Web应用 175 5.2.1 问题 175 5.2.2 解决方案 175 5.2.3 工作原理 175 5.3...

    spring-security-samples

    扫码加微信(微信ID: a_java_boy2 ),备注SpringSecurity,进群讨论。 扫码关注微信公众号【江南一点雨】 ,回复SS获取Spring安全系列完整文章: 本仓库部分Demo有配套视频 视频地址: : 欢迎大家在B站关注我,...

    Spring in Action(第二版 中文高清版).part2

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP...

    SpringBoot+Mybatis+SpringSecurity+Bootstrap+Layui开发的java web轻量级小巧视频网站系统

    SpringBoot+Mybatis+SpringSecurity+Bootstrap+Layui开发java web轻量级小巧视频网站系统 项目描述 PC端+手机端模式自适应 支持本地资源视频文件上传在线播放,同时支持在线资源链接上传(ed2k、迅雷、等资源)...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    第1 章 Spring 基础 2 1.1 Spring 概述 2 1.1.1 Spring 的简史 2 1.1.2 Spring 概述 3 1.2 Spring 项目快速搭建 5 1.2.1 Maven 简介 6 1.2.2 Maven 安装 6 1.2.3 Maven 的pom.xml 7 1.2.4 Spring 项目的搭建 9 1.3 ...

    springCloud

    1) 服务的注册与发现 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    第1 章 Spring 基础 2 1.1 Spring 概述 2 1.1.1 Spring 的简史 2 1.1.2 Spring 概述 3 1.2 Spring 项目快速搭建 5 1.2.1 Maven 简介 6 1.2.2 Maven 安装 6 1.2.3 Maven 的pom.xml 7 1.2.4 Spring 项目的搭建 9 1.3 ...

Global site tag (gtag.js) - Google Analytics