转载

Spring Security与Java应用安全保护

Spring Security与Java应用安全保护

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与Java应用安全保护

应用程序的安全性通常体现在两个方面:认证和授权。

认证是确认某主体在某系统中是否合法、可用的过程。这里的主体既可以是登录系统的用户,也可以是接入的设备或者其他系统。

授权是指当主体通过认证之后,是否允许其执行某项操作的过程。

这些概念并非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 的请求授权,还支持方法访问授权、对象访问授权等,基本涵盖常见的大部分授权场景。

Spring Security与Java应用安全保护

更多时候,一个系统的安全性完全取决于系统开发人员的安全意识。例如,在我们从未听过SQL 注入时,如何意识到要对SQL 注入做防护?关于Web 系统安全的攻击方式非常多,诸如XSS、CSRF 等,未来还会暴露出更多的攻击方式,我们只有在充分了解其攻击原理后,才能提出完善而有效的防护策略。

学习Spring Security 并非局限于降低Java 应用的安全开发成本,通过Spring Security 了解常见的安全攻击手段以及对应的防护方法也尤为重要,这些是脱离具体开发语言而存在的。

Spring Security与Java应用安全保护

虽然Spring Security 有强大的功能,但它同时也有很高的学习成本。

它囊括了身份认证的各种应用场景以及Web 安全的大量知识,仅官方参考手册就有数十万字,并且还省略了诸多实现细节。许多开发人员在面对这样的“庞然大物”时无从入手,更因为对其不够了解而在实际项目中不敢轻易采用。

《Spring Security实战》作为第一本中文版Spring Security相关著作,它的出现为国内学习者提供了一条由浅入深的Spring Security学习路线!

本书讲解了Spring Security 的典型应用场景,并分析了部分核心源码,以及许多开发语言之外的安全知识。通过本书,读者不仅可以学习如何应用Spring Security,还可以学习借鉴它的实现思路,以将这种实现思路应用到其他开发场景中。

在Spring Security应用场景内,深度融合Spring Session、Spring Social、Spring Security OAuth等多个框架,帮助读者完整体验Spring Security优异的扩展性所带来的便利。

Spring Security与Java应用安全保护

原文  http://www.broadview.com.cn/article/419566
正文到此结束
Loading...