springcloud引入spring-security

本文探讨了在SpringCloud项目中集成Spring Security时遇到的安全认证问题,包括Eureka服务的访问控制和微服务模块接口权限管理,以及解决过程中的关键步骤和发现的原因。

关于使用springcloud项目中引入spring-security的问题

1、在集成springcloud项目时,eureka为了安全起见(为了不让所有人能随意访问eureka,就添加了安全认证,pom文件添加了如下的依赖)

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

2、然后再eureka服务里面添加用户名和密码,如下

server:
  port: 8761
spring:
  application:
    name: eureka-server
  security:
    basic:
      enabled: true #开启基于http basic的认证
    user:
      name: admin  #配置登录的账号是admin
      password: admin #配置登录的密码是admin
eureka:
  client:
  #表示是否将自己注册到Eureka Server,默认为true,由于当前应用就是Eureka Server ,故而设为false( 换句话说禁止自己当作服务注册)
  registerWithEureka: false
  #表示是否从Eureka Server获取注册信息,默认为true.因为这是一个单节点的Eureka Server,不需要同步其他的Eureka Server的数据,故而设置为 false
  fetchRegistry: false
  #设置为Eureka Server的交互地址,查询服务和注册服务都需要这个地址。默认是http://localhost:8671/eureka/,多个地址用都逗号隔开
  serviceUrl:
    defaultZone: http://admin:admin@localhost:8761/eureka/
    #defaultZone: http://localhost:8761/eureka/

3、同理,在各个微服务模块均添加上用户名密码。重启服务发现各个微服务模块不能注册到eurea注册中心里面去,此外用postman访问微服务模块的controller接口,接口返回401,权限不允许。去掉pom里面的spring-security及用户名密码设置,才能恢复正常。(目前没有找到原因,等找到原因后重新更新该博客)

### 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、付费专栏及课程。

余额充值