Spring Security是Spring的一个框架,用于加固应用安全。
Spring Security可以加强任何Java应用的安全,但最常用于基于Web的应用。
处理安全性需要理解的几个术语和概念。
验证(Authentication)
凭据(Credential)
授权(Authorization)
访问控制(Access Control)
理解安全性的基本概念,知道如何在URL访问级别、方法调用级别、视图显示级别和领域对象级别上加固Web应用安全。
第一节:加强URL访问安全
首先用Spring MVC构造了一个留言板,然后用Spring Security来加强Web的URL访问安全。可以匿名查看留言,但是添加和删除留言必须登录。
第二节:登录到Web应用
支持多种用户登录web应用。
HTTP基本验证
基于表单的登录
注销服务
匿名登录
Rember-me支持(cookie)
第三节:验证用户
大部分常见的验证提供者利用存储用户细节的用户存储库(内存、关系型数据库或者LDAP存储库)验证用户。
存储用户细节时避免用明文存储用户密码,这样容易遭到攻击。应以加密的方式存储,典型的方法是次啊用单向散列函数对密码进行编码(MD5或SHA)。
如果每次用户登录都要从用户存储库中读取用户细节,应用的性能会受到影响,Spring Security支持在本地内存和存储上缓冲用户细节,节约开销。
用内存中的定义验证用户
依靠数据库验证用户
加密密码
根据LDAP存储验证用户
缓存用户细节
第四节:做出访问控制
成功登录之后,应用必须授予该用户权限或其他特征允许访问哪些资源。
基于投票的访问决策管理器
第五节
作为Web层中加固URL访问的替代或者补充,有时候你可能需要在服务层中加强方法调用的安全。
嵌入安全拦截器
用切入点加强方法安全
用注解加强安全
第六节 处理视图中的安全性
显示验证信息
有条件的显示视图内容
第七节 处理领域对象安全性
当用户试图删除留言,可以查询这条留言的ACL,确定用户是否有权删除这条留言。
设置ACL服务
为领域对象维护ACL
根据ACL做出访问决策
处理方法返回的领域对象