Spring Security 是一个强大且高度可定制的安全框架,致力于为Java 应用提供身份认证和授权。
本书通过4 部分内容由浅入深地介绍了Spring Security 的方方面面。第1 部分主要讲解Spring Security的基本配置;第2 部分剖析Web 项目可能遇到的安全问题,并讲解如何使用Spring Security 进行有效防护;第3 部分详细介绍OAuth,并使用Spring Social 整合Spring Security,实现QQ 快捷登录;第4 部分重点介绍Spring Security OAuth 框架,剖析Spring Security OAuth 的部分核心源码。
本书适合有一定Java 基础的读者,以及希望在项目中应用Spring Security 的开发人员阅读。
包含Spring Security Java配置、Spring Security安全防护和源码导读。
详细讲解OAuth2实战,并简单剖析部分OAuth2核心源码。
陈木鑫,热爱编码,信奉知识沉淀的力量,平常多有关注前沿技术栈,包括但不限于前后端技术、DevOps、Serverless等,近期主要从事IM平台的研发。
前言
Spring Security 的前身是Acegi Security,在被收纳为Spring 子项目后正式更名为SpringSecurity。在笔者成书时,Spring Security 已经升级到5.1.3.RELEASE 版本,不仅新增了原生OAuth框架,还支持更加现代化的密码加密方式。可以预见,在Java 应用安全领域,Spring Security会成为首先被推崇的安全解决方案。
虽然Spring Security 有强大的功能,但它同时也有很高的学习成本。它囊括了身份认证的各种应用场景以及Web 安全的大量知识,仅官方参考手册就有数十万字,并且还省略了诸多实现细节。许多开发人员在面对这样的“庞然大物”时无从入手,更因为对其不够了解而在实际项目中不敢轻易采用。
本书由浅入深、抽丝剥茧地讲解了Spring Security 的典型应用场景,另外,还分析了部分核心源码,以及许多开发语言之外的安全知识。通过本书,读者不仅可以学习如何应用SpringSecurity,还可以学习借鉴它的实现思路,以将这种实现思路应用到其他开发场景中。
本书读者
本书主要面向有一定Java 基础的读者,以及希望在实际项目中应用Spring Security 的开发人员。
本书内容
本书共分为4 个部分。
第1 部分(第1 章至第3 章)主要介绍Spring Security 的基本配置,包括默认配置、简单表单认证,以及基于数据库模型的认证与授权。
第2 部分(第4 章至第11 章)主要介绍各种定制化的配置场景,剖析Web 项目可能遇到的安全问题,并讲解如何使用Spring Security 进行有效防护,部分章节还配备了详细的源码导读。
第3 部分(第13 章)将登录用户的数据来源从系统内转移到社交平台,详细介绍了OAuth,并使用Spring Social 整合Spring Security,实现QQ 快捷登录,满足一般性的项目需求。
第4 部分(第14 章)带领读者认识Spring Security OAuth 框架,并基于该框架完整实现了OAuth 客户端、OAuth 授权服务器以及OAuth 资源服务器三种角色。除此之外,还简单剖析了Spring Security OAuth 的部分核心源码,以帮助读者更好地理解OAuth 框架。
致谢
首先感谢赵召同学(Andy)对第4 部分的贡献。笔者在Gitter 发言表明会写一本关于SpringSecurity 的中文书后,赵召同学找到了我,并希望与我一起写作,但由于这本书实际上已基本成型,所以赵召同学贡献了第4 部分,使得本书内容更加充实,再次感谢赵召同学的贡献。其次也非常感谢博文视点公司的安娜编辑以及身边的朋友给予的鼓励。从下定决心编写这本书开始,笔者其实经历了非常多的折磨,不管是思路的枯竭还是耐心的消磨,都致使笔者几次三番萌生退,但最终还是在不断的鼓励声中坚持了下来,成功为国内希望学习SpringSecurity 的朋友奉上了一本中文版的教程,这份收获也应当属于他们。
陈木鑫
作者讲解的太过简单,没有基础的很难看懂,其次,作者书中的代码都是反编译出来的代码,如果作者很资深的话,会下载源码进行讲解,从这两点感觉作者很不专业,大家可以不用看了。
全书的深度不够。入门又不行。很多东西讲解不够仔细,另外全书的代码阅读体验极差,既然代码太长,为啥不缩小字体?导致整书所有代码段的格式极差。还有配套的源码都已经过去一年了,还没又出完。总结全书不适合阅读,还不如阅读官方原文和官方提供的案例代码
35、我们尝试输入前面在 application.properties中定义的用户名和密码,登录之后,页面打印“hello,user”。然而,我们并没有user 用户,为什么可以成功访问路由呢?为了验证不是授权环节出现了问题,我们尝试访,错了
26、authorizeRequests()方法实际上返回了一个 URL 拦截注册器,我们可以调用它提供的 anyanyRequest()、antMatchers()和regexMatchers()等方法来匹配系统的URL,并为其指定安全 策略。有错啊。
25页、HttpSecurity实际上对应了=Spring Security命名空间配置方式中XML文件内的标签。不觉得写错了吗?