SpringSecurity原理与实战读后感

简介: 本书主要介绍基于Spring Security构建系统安全性的技术体系和工程实践。

第1章

直面Spring Security

Spring Security是Spring家族中历史比较悠久的框架之一,具备完整而强大的功能体系。对于日常开发过程中常见的单体应用、微服务架构,以及响应式系统,Spring Security都能够进行无缝集成和整合,并提供多种常见的安全性功能。

本章作为全书的开篇,将对Spring Security的功能体系作简要介绍,并引出开发人员在使用该框架时所涉及的配置体系。本章的末尾还给出了全书的内容架构。

1.1

Spring Security概览

一般而言,日常开发过程中涉及的业务系统或多或少都会有安全性相关的技术需求,其中最常见的就是用户认证和访问授权。设想一下,如果一个应用程序在认证和授权机制上存在漏洞,将可能泄露用户信息等敏感数据,给用户和公司造成巨大的损失,这样的系统肯定是无法面向生产的。

同时,人们也应该认识到,虽然认证和授权的概念比较简单,但要从零开始构建这些功能,并且做到没有安全漏洞并不是一件容易的事情。这时候需要引入专业的安全性开发框架。在Java 领域中,Spring Security 就是一个应用非常广泛的安全性开发框架,也是 Spring 家族中历史比较悠久的一个框架。Spri-ng Security在日常开发过程中不仅可以与Spring Boot等框架无缝集成,而且是Spring Cloud等综合性开发框架的底层基础框架之一。Spring Security的功能完备且强大。

可以说,如果没有Spring Security,Spring自身的安全性也将无法得到保障。任何使用Spring的地方,都会通过Spring Security对应用程序进行保护。作为开发人员,在日常开发过程中需要用到Spring Security的场景非常多。事实上,对Web应用程序而言,除了分布式环境下的认证和授权漏洞,常见的安全性问题还包括跨站点脚本攻击、跨站点请求伪造、敏感数据暴露、缺乏方法级访问控制等。针对这些安全性问题,开发人员都需要全面设计并实现对应的安全性功能,而Spring Security已经为开发人员提供了相应的解决方案,主要包括如下内容。

用户信息管理。

敏感信息加解密。

用户认证。

权限控制。

跨站点请求伪造保护。

跨域支持。

全局安全方法。

单点登录。

……

在普遍倡导用户隐私和数据价值的当下,掌握各种安全性相关技术已经成为开发人员必须具备的能力。

1.2

Spring Security功能体系

在Spring Boot出现之前,Spring Security就已经存在多年。但Spring Security的发展一直都不是很顺利,主要问题在于在应用程序中集成和配置SpringSecurity框架的过程比较复杂。随着Spring Boot的兴起,基于Spring Boot提供的针对Spring Security的自动配置方案,开发人员可以零配置使用SpringSecurity。在Spring Boot应用程序中使用Spring Security,只须在Maven工程的pom文件中添加如下依赖即可。

<dependency>

<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>

接下来我们构建一个简单的HTTP端点。

@RestControllerpublic class DemoController { @GetMapping("/hello") public String hello() { return "Hello World!";

}}

现在,启动该Spring Boot应用程序,通过浏览器访问“http://localhost:8080//hello”端点。大家可能希望得到“Hello World!”这个输出结果,但事实上,浏览器会跳转到图1-1所示的Spring Security内置的登录界面。

版权:人民邮电出版社