Spring Security 教程(02)、入门

框架历史:从 Acegi 到 Spring Security

tutorial-getting-started 配图
tutorial-getting-started 配图
tutorial-getting-started 配图

Spring Security 的前身叫 Acegi Security System for Spring,最早发布于 2003 年。当时 Spring 框架还处于早期阶段,社区里有人提出:能不能给 Spring 应用加一套安全实现?

第一个版本非常简陋,只是简单的角色检查。但随后的几年里,它迅速成长为功能完整的安全框架。2007 年,Acegi 被正式纳入 Spring 框架,更名为 Spring Security。

为什么选择 Spring Security

企业选择 Spring Security 通常基于以下原因:

第一,与 Spring 生态无缝集成。 你的应用已经用 Spring 了,安全配置和 Spring 的 Bean 管理、依赖注入完全一致。不需要额外的学习成本。

第二,支持多种认证模式。 HTTP Basic、表单登录、LDAP、OAuth、SAML、CAS——无论你用哪种方式验证用户身份,Spring Security 都有对应的支持。

第三,可插拔的过滤器链。 Spring Security 的安全功能通过 Servlet Filter 实现,每个 Filter 负责一个安全职责,你可以按需开启或替换。

第四,方法级安全支持。 除了 URL 级别的授权,Spring Security 还能控制哪些用户能调用哪些方法,基于注解即可实现。

第五,活跃的开发和维护。 Spring Security 是 Spring 官方项目,由 Pivotal(现 VMware)维护,有完整的测试覆盖和定期安全更新。

快速开始:3 步搭建安全应用

在 Spring Boot 中集成 Spring Security 非常简单:

第一步:添加依赖

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

第二步:启动应用

不需要任何配置,Spring Boot 会自动创建一个默认的安全配置:所有请求都需要认证,默认用户名是 user,密码在启动日志中随机生成。

第三步:验证效果

访问你的应用,会被重定向到默认的登录页面。输入用户名和密码后,才能访问受保护的接口。

这就是 Spring Security 的设计哲学:默认安全,配置可选。你不需要写任何代码就能获得基础的安全保护。

下一步

现在你已经有了一个能运行的安全应用。接下来可以深入了解各个配置选项,比如自定义登录页、配置权限规则、集成 LDAP 等。建议从第 3 章”简介”开始系统学习。