- 浏览: 446796 次
- 性别:
- 来自: 大连
博客专栏
-
《Spring Secur...
浏览量:379314
文章分类
最新评论
-
蒙奇君杰:
必须感谢一番!!!愿开源的态度为更多的人所拥有,所 认同!
关于对《Spring Security3》一书的翻译说明 -
601235723:
bbjavaeye 写道你好,有个问题请教一下我配了<b ...
《Spring Security3》第四章第一部分翻译下(自定义的UserDetailsService) -
bay0902:
中国互联网的脊梁
Spring Security 3全文下载 -
hdcustc:
项目源码下载 微博网盘里的那个依赖文件损坏了啊 能否提供个可 ...
Spring Security 3全文下载 -
i641878506:
楼主辛苦, 可以提供原书的原项目文件的下载么
Spring Security 3全文下载
这次上传的部分内容是入门级的,比较简单,但是本章整体的功能还是非常重要的。
第四章 凭证安全存储
到现在为止,我们已经将JBCP Pets站点做了一些用户友好性方面的升级,包括一个自定义的登录页、修改密码以及remember me功能。
在本章中,我们将会把到目前为止都在使用的内存存储转移到数据库作为后台的认证存储。我们将会介绍默认的Spring Security数据库schema,并介绍自定义扩展JDBC实现的方式。
在本章的课程中,我们将会:
l 理解如何配置Spring Security才能使用JDBC访问数据库服务以实现用户的存储和认证;
l 学习如何使用基于内存数据库HSQLDB的JDBC配置,我们使用这个数据库主要是为了开发测试的目的;
l 使得Spring Security的JDBC能够支持已经存在的遗留数据库schema;
l 掌握两种管理用户名和密码的功能,两者都会涵盖内置的和自定义的方式;
l 掌握配置密码编码的不同方法;
l 理解密码salting技术以提供更安全的方式存储密码;
l 持久化用户的remember me token,使得在服务器重启后token仍能有效;
l 通过配置SSL/TLS加密和端口映射,在传输层上保护应用的安全。
使用数据库后台的Spring Security认证
我们进行安全控制的JBCP Pets应用有一个明显问题是基于内存的用户名和密码存在时间比较短,对用户很不友好。一旦应用重启,任何的用户注册,密码修改或者其他的活动都会丢失。这是不可接受的,所以对于JBCP Pets应用的下一个逻辑实现功能就是重新设置Spring Security以使用关系型数据库来进行用户存储和授权。使用JDBC访问数据库能够使得用户的信息能够持久化,及时应用重启依旧有效,另外更能代表现实世界中Spring Security的使用。
配置位于数据库上的认证存储
这个练习的第一部分是建立一个基于Java的关系数据库HyperSQL DB(或简写为HSQL)示例,并装入Spring Security默认的schema。我们将会通过使用Spring Security的嵌入式数据库配置功能来设置HSQL在内存中运行,比起手动的安装数据库,这是一个很简单的配置方法。
请记住在这个例子中(包括本书的其余部分),我们将使用HSQL,主要是因为它很容易安装。在使用这些例子的过程中,我们鼓励修改这个配置以使用你喜欢的数据库。鉴于我们不想让本书的这一部分过多关注于复杂数据库的安装,对练习来说我们选择了更简便而不是更接近现实。
创建Spring Security默认的schema
我们提供了一个SQL文件(security-schema.sql),它将用来创建Spring Security使用HSQL所依赖的所有表。如果你使用自己的数据库实例,你可能会需要调整schema的定义语法来适应特定的数据库。我们会将SQL文件置于classpath中,在WEB-INF/classes目录下。
配置HSQL嵌入式数据库
要配置HSQL嵌入式的数据库,我们需要修改dogstore-security.xml文件,以实现启动数据库并运行SQL来创建Spring Security表结构。首先,我们将会在文件的顶部添加对jdbc XML模式的应用:
<beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/ spring-security3.0.xsd" >
接下来,我们声明<embedded-database>元素,以及对SQL脚本的引用:
<jdbc:embedded-database id="dataSource" type="HSQL"> <jdbc:script location="classpath:security-schema.sql"/> </jdbc:embedded-database>
如果此时重启服务,你可以在日志上看到初始化HSQL数据库。需要记住的是<embedded-database>只会在内存中创建数据库,所以你在内存中看不到任何东西,也不能使用标准的工具进行查询。
配置JdbcDaoImpl凭证存储
我们需要修改dogstore-security.xml文件来声明正在使用JDBC的UserDetailsService实现,替换我们在第二章:Spring Security起步和第三章:增强用户体验中配置的Spring Security内存UserDetailsService实现。这通过一个对<authentication-manager>声明的一个简单改变来实现:
<authentication-manager alias="authenticationManager"> <authentication-provider> <jdbc-user-service data-source-ref="dataSource"/> </authentication-provider> </authentication-manager>
【data-source-ref引用了我们在上一步声明<embedded-database>时定义的bean。】
添加用户定义到schema中
最后,我们要创建另外一个SQL文件,它将会在内存数据库创建时执行。这个SQL文件将会包含默认用户(admin和guest)的信息,以及GrantedAuthority设置(这一点我们在前一章中已经用过了)。我们将这个文件命名为test-data.sql,并将其与security-schema.sql一起放在WEB-INF/classes下:
insert into users(username, password, enabled) values ('admin','admin',true); insert into authorities(username,authority) values ('admin','ROLE_USER'); insert into authorities(username,authority) values ('admin','ROLE_ADMIN'); insert into users(username, password, enabled) values ('guest','guest',true); insert into authorities(username,authority) values ('guest','ROLE_USER'); commit;
接下来,我们需要添加这个SQL文件到嵌入式数据库配置中,它将会在启动时加载:
<jdbc:embedded-database id="dataSource" type="HSQL"> <jdbc:script location="classpath:security-schema.sql"/> <jdbc:script location="classpath:test-data.sql"/> </jdbc:embedded-database>
在SQL添加到数据库配置后,我们应该能够启动应用并登录。Spring Security现在已经查找数据库的认证和GrantedAuthority信息。
基于数据库后台的认证是如何实现的
你可能会记起在第二章中讲述的认证过程,AuthenticationManager委托AuthenticationProvider来校验安全实体的凭证信息以确定它是否能够访问系统。我们在第二章和第三章中使用的AuthenticationProvider为DaoAuthenticationProvider。这个provider又委托了一个UserDetailsService的实现来从凭证库中检索和校验安全实体的信息。我们能够通过以下的图来反应第二章的过程:
正如你可能预期的那样,数据库后台的认证存储和内存存储的唯一区别在于UserDetailsService的实现类。o.s.s.core.userdetails.jdbc.JdbcDaoImpl类提供了UserDetailsService的实现。不同于在内存中(通过Spring Security的配置文件添加)查找,JdbcDaoImpl在数据库中查找用户。
你可能意识到我们根本没有引用这个实现类。这是因为在更新后的Spring Security配置中<jdbc-user-service>声明会自动配置JdbcDaoImpl并将其织入到AuthenticationProvider中。在本章接下类的内容中,我们将会介绍如何配置Spring Security使用我们自定义的JdbcDaoImpl实现,它继续包含了修改密码功能(在第三章中我们添加到InMemoryDaoImpl了)。让我们看一下如何实现自定义的支持修改密码功能的JdbcDaoImpl子类配置。
发表评论
-
Spring Security 3全文下载
2012-03-15 20:31 20103本书已经翻译完成,提供给大家下载 以下地址为ITEYE的电子 ... -
《Spring Security3》附录翻译(参考资料)
2012-02-13 22:58 6412附录:参考材料 在本附录中, ... -
《Spring Security3》第十三章翻译(迁移到Spring Security 3)
2012-02-13 22:50 5184第十三章 迁移到Spring Security 3 ... -
《Spring Security3》第十二章翻译(Spring Security扩展)
2012-02-13 22:38 7788第十二章 Spring Security扩展 ... -
《Spring Security3》第十一章(客户端证书认证)第二部分翻译
2012-02-13 22:23 4760在Spring Security中配置客户端证书认证 ... -
《Spring Security3》第十一章(客户端证书认证)第一部分翻译
2012-02-13 22:00 6118第十一章 客户端证书认证(Client Cert ... -
《Spring Security3》第十章(CAS)第二部分翻译(CAS高级配置)
2012-01-19 13:07 8571高级CAS配置 ... -
《Spring Security3》第十章(CAS)第一部分翻译(CAS基本配置)
2012-01-19 12:54 12217第十章 使用中心认证服务(CAS)进行单点登录 ... -
《Spring Security3》第九章(LDAP)第三部分翻译(LDAP明确配置)
2012-01-19 12:44 6379明确的LDAP bean配置 ... -
《Spring Security3》第九章(LDAP)第二部分翻译(LDAP高级配置)
2012-01-19 12:36 7079LDAP的高级配置 一旦我们 ... -
《Spring Security3》第九章(LDAP)第一部分翻译(LDAP基本配置)
2012-01-19 12:22 6099第九章 LDAP目录服务 在本章中,我们 ... -
《Spring Security3》第八章第三部分翻译(属性交换)
2012-01-18 15:46 2871属性交换(Attribute Exchange) ... -
《Spring Security3》第八章第二部分翻译(OpenID用户的注册)
2012-01-18 13:39 5314OpenID用户的注册问 ... -
《Spring Security3》第八章第一部分翻译(OpenID与Spring Security)
2012-01-17 22:38 7496第八章 对OpenID开放 OpenID是 ... -
《Spring Security3》第七章第三部分翻译(ACL的注意事项)
2012-01-17 22:25 2651典型ACL部署所要考虑的事情 ... -
《Spring Security3》第七章第二部分翻译(高级ACL)(下)
2012-01-17 22:17 4138支持ACL的Spring表达式语言 SpEL对A ... -
《Spring Security3》第七章第二部分翻译(高级ACL)(上)
2012-01-10 22:59 4560高级ACL话题 一些高级的话 ... -
《Spring Security3》第七章第一部分翻译(访问控制列表ACL)
2011-12-30 22:02 9434第七章 访问控制列表(ACL) 在本章中, ... -
《Spring Security3》第六章第七部分翻译(认证事件处理与小结)
2011-11-22 22:37 5367认证事件处理 有一个重要的功能只能通 ... -
《Spring Security3》第六章第六部分翻译(Spring Security基于bean的高级配置)
2011-11-22 22:25 5380Spring Security基于bean的高级配置 ...
相关推荐
第一部分前言 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...
1)容器启动(MySecurityMetadataSource:loadResourceDefine加载系统资源与权限列表) 2)用户发出请求 3)过滤器拦截(MySecurityFilter:doFilter) 4)取得请求资源所需权限(MySecurityMetadataSource:get...
第1章 Spring简介 1 1.1 实例化Spring IoC容器 1 1.1.1 问题 1 1.1.2 解决方案 1 1.1.3 工作原理 3 1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用...
SpringBoot+Mybatis+SpringSecurity+Bootstrap+Layui开发java web轻量级小巧视频网站系统 项目描述 PC端+手机端模式自适应 支持本地资源视频文件上传在线播放,同时支持在线资源链接上传(ed2k、迅雷、等资源)...
第一部分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小结...
第1章 Spring简介 1 1.1 实例化Spring IoC容器 1 1.1.1 问题 1 1.1.2 解决方案 1 1.1.3 工作原理 3 1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用...
第一部分 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的核心 第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...
第1章 Spring Boot 简介 讲解Spring Boot的项目背景,已经与其他技术框架(比如,Spring、SpringMVC、SpringCloud等)的关系。 简单介绍下Spring Boot 整个生态系统 第2章 开启 Spring Boot 的第一个 Web 项目 ...
第1章 Spring Boot 简介 1-1+_Spring+Boot博客_课程导学 1-2+-Spring+Boot+是什么 第2章 开启 Spring Boot 的第一个 Web 项目 2-1 -初始化第一个Web项目 2-2 -用Gradle编译项目 2-3 -探索项目 第3章 一个Hello...
我完全重写了我的第一个版本。 现在,该解决方案基于的代码库。 我尝试提取JWT身份验证所需的最少配置和类,并进行了一些更改。要求该演示是使用Maven 3.6.x和Java 11构建的。用法只需使用Spring Boot maven插件( ...
第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 ...
SpringSecurity0包含两部分代码:首先是博客springboot + mybatis + SpringSecurity实现用户角色数据库管理地址: : 第二个博客springBoot + springSecurity验证密码MD5加密地址: : springboot-SpringSecurity1...
本项目示例基于spring boot 最新版本(2.1.9)实现,Spring Boot、Spring Cloud 学习示例,将持续更新…… 在基于Spring Boot、Spring Cloud 分布微服务开发过程中,根据实际项目环境,需要选择、集成符合项目...
1、基于Spring Boot的社区论坛项目源码+数据库+项目说明.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习...
第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 ...
第1章 Spring Boot 简介 讲解Spring Boot的项目背景,已经与其他技术框架(比如,Spring、SpringMVC、SpringCloud等)的关系。简单介绍下Spring Boot 整个生态系统 第2章 开启 Spring Boot 的第一个 Web 项目 ...
JavaEE开发的颠覆者 Spring Boot实战,多个地址免费下载,第一部分 点睛Spring 4.x 第1 章 Spring 基础 ..........................................2 1.1 Spring 概述 ................................................
spring boot 项目代码,直接启动,第一部分 点睛Spring 4.x 第1 章 Spring 基础 ..........................................2 1.1 Spring 概述 ............................................. 2 1.2 Spring 项目...
3. 订单管理:实现订单的创建、编辑、取消、查询功能,包括订单详情、订单状态、订单金额等信息。 4. 库存管理:实现库存的增加、减少、查询功能,保持库存与实际销售一致。 5. 销售统计:实现对销售数据的统计和...