Spring Security是一个强大且高度可定制的安全框架,致力于为Java应用提供身份认证和授权。第一本Spring Security中文版图书《Spring Security实战》现已上市。
Spring Security 的前身是Acegi Security,在被收纳为Spring 子项目后正式更名为SpringSecurity。从5.1.3.RELEASE 版本开始,Spring Security加入了原生OAuth2.0 框架,支持更加现代化的密码加密方式。可以预见,在Java 应用安全领域,Spring Security 会成为被首先推崇的解决方案,就像我们看到服务器就会联想到Linux 一样顺理成章。
应用程序的安全性通常体现在两个方面:认证和授权。
认证是确认某主体在某系统中是否合法、可用的过程。这里的主体既可以是登录系统的用户,也可以是接入的设备或者其他系统。
授权是指当主体通过认证之后,是否允许其执行某项操作的过程。
这些概念并非Spring Security 独有,而是应用安全的基本关注点。Spring Security 可以帮助我们更便捷地完成认证和授权。
Spring Security 支持广泛的认证技术,这些认证技术大多由第三方或相关标准组织开发。
Spring Security 已经集成的认证技术如下:
◎ HTTP BASIC authentication headers:一个基于IETF RFC 的标准。
◎ HTTP Digest authentication headers:一个基于IETF RFC 的标准。
◎ HTTP X.509 client certificate exchange:一个基于IETF RFC 的标准。
◎ LDAP:一种常见的跨平台身份验证方式。
◎ Form-based authentication:用于简单的用户界面需求。
◎ OpenID authentication:一种去中心化的身份认证方式。
◎ Authentication based on pre-established request headers:类似于Computer Associates SiteMinder,一种用户身份验证及授权的集中式安全基础方案。
◎ Jasig Central Authentication Service:单点登录方案。
◎ Transparent authentication context propagation for Remote Method Invocation (RMI) and HttpInvoker:一个Spring 远程调用协议。
◎ Automatic “remember-me” authentication:允许在指定到期时间前自行重新登录系统。
◎ Anonymous authentication:允许匿名用户使用特定的身份安全访问资源。
◎ Run-as authentication:允许在一个会话中变换用户身份的机制。
◎ Java Authentication and Authorization Service:JAAS,Java 验证和授权API。
◎ Java EE container authentication:允许系统继续使用容器管理这种身份验证方式。
◎ Kerberos:一种使用对称密钥机制,允许客户端与服务器相互确认身份的认证协议。
除此之外,Spring Security 还引入了一些第三方包,用于支持更多的认证技术,如JOSSO等。如果所有这些技术都无法满足需求,则Spring Security 允许我们编写自己的认证技术。因此,在绝大部分情况下,当我们有Java 应用安全方面的需求时,选择Spring Security 往往是正确而有效的。
在授权上,Spring Security 不仅支持基于URL 对Web 的请求授权,还支持方法访问授权、对象访问授权等,基本涵盖常见的大部分授权场景。
更多时候,一个系统的安全性完全取决于系统开发人员的安全意识。例如,在我们从未听过SQL 注入时,如何意识到要对SQL 注入做防护?关于Web 系统安全的攻击方式非常多,诸如XSS、CSRF 等,未来还会暴露出更多的攻击方式,我们只有在充分了解其攻击原理后,才能提出完善而有效的防护策略。
学习Spring Security 并非局限于降低Java 应用的安全开发成本,通过Spring Security 了解常见的安全攻击手段以及对应的防护方法也尤为重要,这些是脱离具体开发语言而存在的。
虽然Spring Security 有强大的功能,但它同时也有很高的学习成本。
它囊括了身份认证的各种应用场景以及Web 安全的大量知识,仅官方参考手册就有数十万字,并且还省略了诸多实现细节。许多开发人员在面对这样的“庞然大物”时无从入手,更因为对其不够了解而在实际项目中不敢轻易采用。
《Spring Security实战》作为第一本中文版Spring Security相关著作,它的出现为国内学习者提供了一条由浅入深的Spring Security学习路线!
本书讲解了Spring Security 的典型应用场景,并分析了部分核心源码,以及许多开发语言之外的安全知识。通过本书,读者不仅可以学习如何应用Spring Security,还可以学习借鉴它的实现思路,以将这种实现思路应用到其他开发场景中。
在Spring Security应用场景内,深度融合Spring Session、Spring Social、Spring Security OAuth等多个框架,帮助读者完整体验Spring Security优异的扩展性所带来的便利。