简介
Spring Security 是什么?
spring security 是基于spring框架,提供了一套 Web 应用安全性的完整解决方案一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。
用户认证
Spring Security 提供了自己的一组认证功能,包括LDAP,CAS,Spring远程协议,Form-based authentication (用于简单的用户界面),OpenID 认证,由于灵活的身份验证模式,使得它们可以快速的应用到项目方案中去
用户授权
无论何种身份验证机制,Spring Security提供一套的授权功能。这里有三个主要的热点区域,授权web请求、授权方法是否可以被调用和授权访问单个域对象的实例。
项目搭建
本文是基于Spring boot 框架搭建Spring Security的使用
首先在Maven 的pom.xml 依赖配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
spring boot starter工程对于使用者是非常方便的,使用者通常只要在pom.xml引入starter的jar,则此工程依赖的类,就全部自动引入。但为了更加清楚了解整个Spring Security,简单介绍一下,项目模块
核心模块 - spring-security-core.jar
包含核心的验证和访问控制类和接口,远程支持和基本的配置API。任何使用Spring Security的应用程序都需要这个模块。支持独立应用程序、远程客户端、服务层方法安全和JDBC用户配置。包含以下顶层包:
org.springframework.security.core
org.springframework.security.access
org.springframework.security.authentication
org.springframework.security.provisioning
远程调用 - spring-security-remoting.jar
提供与Spring Remoting的集成,通常你不需要这个模块,除非你挣使用Spring Remoting编写远程客户端。主要的包是 org.springframework.security.remoting.
网页 - spring-security-web.jar
包括网站安全相关的基础代码。使用Servlet API的任何应用都需要依赖它。如果你需要Spring Security网页验证服务和基于URL的访问控制你需要这个模块。主包名为 org.springframework.security.web.
LDAP - spring-security-ldap.jar
LDAP验证和配置代码,如果你需要使用LDAP验证和管理LDAP用户实体,你需要这个模块。主包名为 org.springframework.security.ldap.
ACL访问控制表 - spring-security-acl.jar
ACL专门的领域对象的实现。用来在你的应用程序中应用安全特定的领域对象实例。主包名为 org.springframework.security.acls.
CAS - spring-security-cas.jar
Spring Security的CAS客户端集成。如果你想用CAS的SSO服务器使用Spring Security网页验证需要该模块。顶层的包是 org.springframework.security.cas.
OpenID - spring-security-openid.jar
OpenID 网页验证支持。使用外部的OpenID服务器验证用户。 org.springframework.security.openid. 需要 OpenID4Java.
Test - spring-security-test.jar
支持Spring Security的测试。
或许对于刚接触的Spring Security可能对这些模块生疏,不要担心在接下来的系列文章中我会都用到这些模块,倒时会有详细的介绍及使用