初识Spring Security
本书所有的示例都基于Inellij IDEA 创建的Spring Boot项目,因此读者需要具备一定的Spring相关知识。
1.1 Spring Security简介
Spring Security 的前身是Acegi Security, 在被收纳为Spring 子项目后正式更名为SpringSecurity.
在笔者成书时,Spring Security已经升级到5.1.3.RELEASE版本,加入了原生OAuth2.0框 架,支持更加现代化的密码加密方式。可以预见,在Java应用安全领域,Spring Security 会成为被首先推崇的解决方案,就像我们看到服务器就会联想到Linux一样顺理成章。
应用程序的安全性通常体现在两个方面:认证和授权。
认证是确认某主体在某系统中是否合法、可用的过程。这里的主体既可以是登录系统的用户,也可以是接入的设备或者其他系统。
授权是指当主体通过认证之后,是否允许其执行某项操作的过程。
这些概念并非Spring Security 独有,而是应用安全的基本关注点。Spring Security可以帮助我们更便捷地完成认证和授权。
Spring Security 支持广泛的认证技术,这些认证技术大多由第三方或相关标准组织开发。 Spring Seurity已经集成的认证技术如下:
◎ HTTP BASIC authentication headers: 一个基于IETF RFC的标准。
◎ HTTP Digest authentication headers:一 个基于IETF RFC的标准。
◎ HTTP Xx.509 client cerificate exchange: 一个基于IETP RFC的标准。
◎LDAP:一种常见的跨平台身份验证方式。
◎Form-based authentication:用于简单的用户界面需求。
◎OpenID authentication:一种去中心化的身份认证方式。
◎Authentication based on pre-established request headers:类似于Computer AssociatesSiteMinder,一种用户身份验证及授权的集中式安全基础方案。
◎Jasig Central Authentication Service:单点登录方案。
◎Transparent authentication context propagation for Remote Method Invocation (RM) 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:一种使