Spring Cloud 之Spring-Security

本文详细介绍了Spring Security,包括其概念、应用场景、与Spring Boot的整合方式,以及formLogin和httpBasic模式的实现。此外,还讨论了Spring Security在权限控制、自定义登录界面和RBAC权限控制模型中的应用。提供了环境搭建、配置示例和相关处理接口的说明。

Spring Cloud 之Spring-Security

对于Spring-Security首先要明白这么几点:

1、什么是SpringSecurityurity
2、SpringSecurity应用场景
3、SpringBoot整合Security
4、Security formLogin 模式
5、Security httpBasic模式
6、Security 实现账号权限控制
7、Security 自定义登陆界面
8、RBAC权限控制模型
http://pig.pigx.top/#/admin/role

 

什么是SpringSecurityu
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
参考百度百科:https://baike.baidu.com/item/spring%20security/8831652?fr=aladdin

SpringSecurity官网:https://spring.io/projects/spring-security
Spring整合SpringSecurityu
SpringBoot整合SpringSecurityu

 

微服务安全框架 SpringBootSecurity
Security应用场景

Security在很多企业中作为后台角色权限框架、授权认证oauth2.0 、安全防护(防止跨站点请求)、Session攻击、非常容易融合SpringMVC使用等

有两个账户
admin 账户 所有请求都有权限访问
userAdd账户 只能访问查询和添加订单权限
403 权限不足
401 没有授权

 

环境搭建:

  admin账户  所有请求都有权限访问

  userAdd账户  只能访问查询和添加订单

  

  关于 formLogin模式   :  表单提交认证模式 

           httpBasic模式   :浏览器与服务器做认证授权

 

  maven的依赖主要:

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

 

关于HttpBasic模式:

  

在HTTP协议进行通信的过程中,HTTP协议定义了基本认证过程以允许HTTP服务器对WEB浏览器进行用户身份证的方法,当一个客户端向HTTP服务 器进行数据请求时,如果客户端未被认证,则HTTP服务器将通过基本认证过程对客户端的用户名及密码进行验证,以决定用户是否合法。客户端在接收到HTTP服务器的身份认证要求后,会提示用户输入用户名及密码,然后将用户名及密码以BASE64加密,加密后的密文将附加于请求信息中, 如当用户名为toov5,密码为:123456时,客户端将用户名和密码用“:”合并,并将合并后的字符串用BASE64加密为密文,并于每次请求数据 时,将密文附加于请求头(Request Header)中。HTTP服务器在每次收到请求包后,根据协议取得客户端附加的用户信息(BASE64加密的用户名和密码),解开请求包,对用户名及密码进行验证,如果用 户名及密码正确,则根据客户端请求,返回客户端所需要的数据;否则,返回错误代码或重新要求客户端提供用户名及密码。

 

maven:

 

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>
    <!-- 管理依赖 -->
    <dependencyMana
### Spring Boot Starter Security vs Spring Cloud Starter Security vs Spring Cloud Starter OAuth2 #### **Spring Boot Starter Security** `spring-boot-starter-security` 是 Spring Boot 提供的一个基础安全模块,主要用于简化应用程序的安全配置。它集成了 `Spring Security` 的核心功能,提供了开箱即用的身份验证和授权机制。 - 它的核心作用是对 Web 应用程序提供基本的安全保护,例如表单登录、HTTP 基本身份验证以及 CSRF 防护等功能。 - 开发者可以通过简单的注解(如 `@EnableWebSecurity` 和 `@Secured`)来定义访问控制策略[^1]。 代码示例: ```java @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/admin/**").hasRole("ADMIN") .anyRequest().authenticated() .and() .formLogin(); } } ``` --- #### **Spring Cloud Starter Security** `spring-cloud-starter-security` 扩展了 `spring-boot-starter-security` 的能力,专门为基于 Spring Cloud 构建的分布式系统设计。它的主要目标是在微服务环境中增强安全性。 - 它不仅包含了标准的 Spring Security 功能,还支持跨多个服务的一致性身份验证和授权管理。 - 特别适用于需要集成服务发现(如 Eureka)、负载均衡器(如 Ribbon 或 Zuul),并希望在这些组件之间共享会话状态的应用场景[^2]。 --- #### **Spring Cloud Starter OAuth2** `spring-cloud-starter-oauth2` 则进一步扩展了 Spring Security 的功能,专注于 OAuth 2.0 协议的支持。它是构建现代应用中常见的第三方登录(如 Google 登录、Facebook 登录等)或内部 API 认证的基础工具。 - 此依赖项允许开发者轻松实现客户端模式下的 OAuth 授权流程,并能够处理复杂的令牌交换逻辑。 - 同时也间接引入了 `spring-cloud-starter-security` 和其他必要的子模块,从而形成完整的安全框架体系结构[^3]。 代码片段展示如何通过 Maven 添加该依赖及其版本号: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-oauth2</artifactId> <version>2.1.2.RELEASE</version> </dependency> ``` 当使用此依赖时,默认情况下已经涵盖了大部分所需的功能集合,无需单独声明额外的相关包名列表。 --- ### 总结对比表格 | 属性/特性 | spring-boot-starter-security | spring-cloud-starter-security | spring-cloud-starter-oauth2 | |------------------------|--------------------------------------------------|-----------------------------------------------|--------------------------------------------| | 主要关注领域 | 基础安全保障 | 微服务体系中的统一安全管理 | 支持OAuth协议 | | 是否适合单一应用 | ✔ | ✖ | ✖ | | 是否适配于微服务环境 | ✖ | ✔ | ✔ | | 默认包含OAuth支持 | ✖ | ✖ | ✔ | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值