Spring Security
核心功能
对于一个安全管理框架而言,无论是
Shiro
还是Spring Security
,最核心的功能无非就是两点:
- 认证
- 授权
通俗点说,认证就是身份验证,也就是你是谁?授权就是访问控制,也就是你可以做什么?
1.认证
Spring Security
支持多种不同的认证方式,这些认证方式有的是Spring Security
自己提供的认证功能,有的是第三方标准组织制定的。Spring Securtiy
集成的主流认证机制主要如下几种:
- 表单认证
OAuth 2.0
认证SAML 2.0
认证CAS
认证RememberMe
自动认证JAAS
认证OpenID
去中心化认证Pre-Authentication Scenarios
认证X509
认证HTTP Basic
认证HTTP Digest
认证
作为一个开放的平台,Spring Security
提供的认证机制不仅仅包括上面列举的这些,开可以通过引入第三方依赖来支持更多的认证方式。同时,如果这些人在方式无法满足复杂的业务需求,开发者也可自定义认证逻辑,特别是当开发者和一些老破旧的系统进行集成时,自定义认证逻辑就显得非常重要了。
2.授权
无论采用了上面哪种认证方式,都不影响在Spring Security
中使用授权功能。Spring Security
支持基于URL
的请求授权、支持方法访问授权、支持SpEL
访问控制、支持域对象安全ACL
。同时也支持动态权限配置、支持RBAC
权限模型等,总之,常见的权限管理需求,Spring Security
基本上都是支持的。
3.话外音
在认证和授权这两个核心功能之外,Spring Security
还提供了很多安全管理的周边功能,这也是一个非常重要的特色。
大部分Java
开发工程师都不是专业的Web
安全工程师,自己开发的安全管理框架可能会存在大大小小的漏洞安全。而Spring Security
的强大之处在于,即使你不了解很多网络攻击手段,只要使用了Spring Security
,它就会帮助我们自动防御很多网络攻击,例如CSRF
攻击、会话固定攻击等。同时Spring Security
还提供了HTTP
防火墙来拦截大量非法请求。由此可见,研究Spring Security
也就是研究常见的网络攻击以及防御策略。
对于大部分Java
项目而言,无论是从经济性还是安全性来考虑,使用Spring Security
无疑是最佳方案。