spring security安全框架整理

 

springboot依赖

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

 

简介

Spring 是非常流行和成功的 Java 应用开发框架,Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。正如你可能知道的关于安全方面的两个主要区域是“认证”和“授权”(或者访问控制),一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分,这两点也是 Spring Security 重要核心功能。 (1)用户认证指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。通俗点说就是系统认为用户是否能登录 (2)用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。通俗点讲就是系统判断用户是否有权限去做某些事情。  

特点

1、和spring无缝整合

2、全面的权限控制

3、转为Web开发而设计

      1)旧版本不能脱离Web环境使用

       2)新版本对整个框架进行了分层抽取,分成了核心模块和 Web 模块。单独引入核心模块就可以脱离 Web 环境

4、重量级

 

与shiro对比shiro的特点

1、轻量级

2、通用性

      1)好处:不限于Web环境,可以脱离Web环境使用

      2)缺陷:在Web环境下一些特定的需求需要手动编写代码实现

 

spring security入门

新建springboot工程或moudle,添加web和security依赖,写一个Controller,快速测试一下,会在启动目录中看到随机生成的密码,用户名默认为user

spring security安全框架整理

 

 

基本原理

本质就是一个过滤链

从项目的启动日志就可以看到

spring security安全框架整理

来看三个过滤器的源码

FilterSecurityInterceptor:是一个方法级的权限过滤器, 基本位于过滤链的最底部

spring security安全框架整理

 可以看到就是一个过滤器

spring security安全框架整理

 核心验证放行

spring security安全框架整理

super.beforeInvocation(fi) 表示查看之前的 filter 是否通过。 fi.getChain().doFilter(fi.getRequest(), fi.getResponse());表示真正的调用后台的服务。

 

 

ExceptionTranslationFilter:是个异常过滤器,用来处理在认证授权过程中抛出的异常

spring security安全框架整理

 

 

 

 

 


UsernamePasswordAuthenticationFilter :对/login 的 POST 请求做拦截,校验表单中用户名,密码。 spring security安全框架整理

 

 

 

自从有了springboot之后,对于spring security提供了自动化配置方案,可以使用较少的配置来使用spring security

 

两个重要的接口

UserDetailsService 接口

查询数据库用户名和密码的过程

 

1、创建类继承UserNamePasswordAuthenticationFilter,重写是三个方法

2、创建类实现UserDetailsService 接口,编写查询过程,返回User对象,这个User对象是框架自带的

 

PasswordEncoder接口

用于返回User中密码的加密

 

Web权限方案

用户认证

1、设置登录的用户名和密码

1)通过配置文件

spring security安全框架整理

 

 

2)通过配置类

3)自定义编写实现类

 

 

 

 

 

 

 

 

 

 

 

 

 

上一篇:SAP Commerce Cloud portal 的 deployment


下一篇:wso2使用