写在前面
Spring Scurity 的前身是Acegi Security, 在被收纳为Spring子项目后正式更名为Spring Security。现已升级到5.1.3.RELEASE版本,加入了原生OAuth2.0框架,支持更加现代化的密码加密方式。可以预见,在Java应用安全领域,Spring Security 会成为被首先推崇的解决方案,就像我们看到服务器就会联想到Linux一样顺理成章。
应用程序的安全性通常体现在两个方面:认证和授权。
- 认证是确认某主体在某系统中是否合法、可用的过程。这里的主体既可以是登录系统的用户,也可以是接入的设备或者其他系统。
- 授权是指当主体通过认证之后,是否允许其执行某项操作的过程。.
这些概念并非Spring Security独有,而是应用安全的基本关注点。Spring Security可以帮助我们更便捷地完成认证和授权。
虽然Spring Security 有强大的功能,但它同时也有很高的学习成本。它囊括了身份认证的各种应用场景以及Web安全的大量知识,仅官方参考手册就有数十万字,并且还省略了诸多实现细节。许多开发人员在面对这样的“庞然大物”时无从入手,更因为对其不够了解而在实际项目中不敢轻易采用。
在这里小编为大家带来这篇在阿里内部都疯狂传播的Spring Security的秘籍,本篇由浅入深、抽丝剥茧地讲解了Spring Security 的典型应用场景,另外,还分析了部分核心源码,以及许多开发语言之外的安全知识。通过本文,大家不仅可以学习如何应用Spring Security,还可以学习借鉴它的实现思路,以将这种实现思路应用到其他开发场景中。
主要内容
本篇共分为4个部分。
第1部分主要介绍Spring Security 的基本配置,包括默认配置、简单表单认证,以及基于数据库模型的认证与授权。
第2部分主要介绍各种定制化的配置场景,剖析Web项目可能遇到的安全问题,并讲解如何使用Spring Security进行有效防护,部分章节还配备了详细的源码导读。
第3部分将登录用户的数据来源从系统内转移到社交平台,详细介绍了OAuth,并使用Spring Social整合Spring Security,实现QQ快捷登录,满足一般性的项目需求。
第4部分带领读者认识Spring Security OAuth框架,并基于该框架完整实现了OAuth客户端、OAuth 授权服务器以及OAuth资源服务器三种角色。除此之外,还简单剖析了Spring Security OAuth的部分核心源码,以帮助读者更好地理解OAuth框架。
请注意,为了不影响大家的阅读体验,小编在这里只是截取了各个章节介绍,大家既能够了解主要内容,又阅读起来简洁快捷
章节介绍
第1章给大家简单的介绍Spring Security,创建了一个简单的Spring Security项目,带领大家初步领略Spring Security带来的便利。
第2章我们使用表单认证来保护URL资源。
第3章将更加深入地对Spring Security 进行配置,且初步使用授权机制。
在验证用户名和密码之前,引入辅助验证可有效防范暴力试错,图形验证码就是简单且行之有效的一种辅助验证方式。本章将使用过滤器和自定义认证两种方式实现图形验证码功能。
第5章主要讲自动登录和注销登录,关于网站的安全设计,通常是有一些矛盾点的。我们在作为某些系统开发者的同时,也在充当着另外一些系统的用户,一些感同身受的东西可以带来很多思考。
第6章讲会话管理,只需在两个浏览器中用同一个账号登录就会发现,到目前为止,系统尚未有任何会话并发限制。一个账户能多处同时登录可不是一个好的策略。事实上, Spring Security已经为我们提供了完善的会话管理功能,包括会话固定攻击、会话超时检测以及会话并发控制。
第7章讲密码加密,密码安全是互联网安全的一个缩影,我们在享受互联网服务的同时,也应当对它投入更多的关注。
第8章介绍跨域,跨域是一种浏览器同源安全策略,即浏览器单方面限制脚本的跨域访问。
第9章对跨域请求伪造的防护进行了讲解,CSRF的全称是( Cross Site Request Forgery) ,可译为跨域请求伪造,是一种利用用户带登录态的cookie进行安全操作的攻击方式。CSRF实际上并不难防,但常常被系统开发者忽略,从而埋下巨大的安全隐患。
第10章介绍单点登录和CAS,单点登录( Single Sign On, SsO)是指在多个应用系统中,只需登录一次,即可同时以登录态共享企业所有相关又彼此独立的系统的功能。对于旗下拥有众多系统的企业来说,单点登录不仅降低了用户的登录成本,统一了不同系统间的账号体系,还减少了各个系统在用户设计上付出的精力。
第11章讲HTTP认证,除系统内维护的用户名和密码认证技术外,Spring Security还支持HTTP层面的认证技术,包括HTTP基本认证和HTTP摘要认证两种。
第12章讲解@EnableWebSecurity与过滤器链机制。
第13章介绍用Spring Social实现OAuth对接,OAuth解决了在用户不提供密码给第三方应用的情况下,让第三方应用有权获取用户数据以及基本信息的难题。
第14章讲解用Spring Security OAuth实现OAuth对接。
总结
本篇按照What(背景知识)、How(实战)Why(源码分析)原则,抽丝剥茧地讲解Spring Security的典型应用场景,提供一条由浅入深的Spring Security学习路线,并分析部分核心源码,帮助大家快速掌握Spring Security的相关知识。