学习笔记:微服务-3.spring.cloud 加入spring.security(Greenwich.M3)

本文详细介绍了如何在Spring Cloud Eureka注册中心中集成Spring Security进行身份验证,包括服务端和客户端的配置步骤,以及如何通过账号密码保护Eureka服务和微服务注册过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上节学习可以启动spring cloud Eureka注册中心服务,这节加上spring.security 的认证功能,加上后,登录Eureka 的网页需要输入账号密码,微服务客户端注册到中心也需要提供账号密码

本节是把上上节学习的 spring boot 和上节学习的 spring cloud Eureka 结合起来,再加上认证功能

一、 spring cloud Eureka server 相关设置

1.pom.xml 加入secirity支持

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

2. application.properties 设置改为

server.port=8888
eureka.instance.hostname=centos7
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://admin:123@centos7:8888/eureka/     
management.endpoints.web.exposure.include=*
spring.security.user.name=admin
spring.security.user.password=123

3. 增加WebSecurityConfig 认证配置类

因为高版本的spring cloud中没有  security.basic.enabled=true这个设置项,这个摸索了好久,最后找到网友的以下这个方案可行。

为了能够接受客户端认证请求,在Eureka server需要增加这个类

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER);
        http.csrf().disable();
        http.authorizeRequests().anyRequest().authenticated().and().httpBasic();
    }
}

 

二、Eureka client 客户端的配置

1.pom.xml 同样加入security支持

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

2.配置文件  application.properties

server.port=8080
eureka.client.serviceUrl.defaultZone=http://admin:123@centos7:8888/eureka/
spring.application.name=SpringDemo
spring.security.user.name=admin
spring.security.user.password=123

三,测试,分别启动Eureka服务和客户端

1. 需要登录进入Eureka界面

 

2.输入账号密码后,可见客户端注册成功

 

 

<think>我们正在解决Maven依赖无法找到的问题,具体是`org.springframework.cloud:spring-cloud-dependencies:2023.0.3`。根据引用[2]中的解决方案,我们可以通过添加依赖管理(dependencyManagement)来指定版本,并且使用<scope>import</scope>和<type>pom</type>来导入BOM(Bill ofMaterials)。同时,引用[3]提到SpringCloud版本与SpringBoot版本需要匹配。因此,我们需要确认当前项目的SpringBoot版本是否与SpringCloud2023.0.3兼容。步骤:1.检查SpringBoot版本:根据Spring官方文档,SpringCloud2023.0.x(代号为Kilburn)需要SpringBoot3.2.x版本。2.如果当前项目使用的是较低的SpringBoot版本(如1.5.9,如引用[3]所示),则无法直接使用2023.0.3版本的SpringCloud。需要升级SpringBoot版本或选择兼容的SpringCloud版本。解决方案:情况1:如果项目使用的是SpringBoot3.2.x,那么可以添加如下依赖管理:情况2:如果项目使用的是较旧的SpringBoot版本,则需要选择与之兼容的SpringCloud版本。我们首先假设用户希望使用SpringCloud2023.0.3,那么需要确保SpringBoot版本为3.2.x。操作:1.在pom.xml中,确保父项目(parent)为SpringBoot3.2.x,例如:<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.5</version> <!--使用3.2.x版本 --></parent>2.在pom.xml的<dependencyManagement>部分添加SpringCloud的BOM:<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2023.0.3</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>3.如果用户无法升级SpringBoot到3.2.x,则需要根据当前SpringBoot版本选择SpringCloud版本。可参考官方版本对应关系:https://spring.io/projects/spring-cloud#overview例如,如果用户使用的是SpringBoot2.6.x,那么应该选择2021.0.x版本的SpringCloud(如引用[2]中使用的2021.0.3和2021.0.4.0)。因此,我们需要用户先确认SpringBoot版本,然后选择对应的SpringCloud版本。如果用户已经确认了SpringBoot版本,我们可以给出具体的依赖管理配置。另外,引用[1]中提到的问题是关于spring-ai-core的,但用户当前问题与SpringCloud相关,所以主要参考引用[2]和[3]。总结解决步骤:-步骤1:检查SpringBoot版本。-步骤2:根据SpringBoot版本选择兼容的SpringCloud版本(参考官方文档)。-步骤3:在pom.xml中添加对应的依赖管理(dependencyManagement)配置。如果用户已经使用了SpringCloudAlibaba,还需要注意SpringCloud Alibaba的版本与SpringCloud版本的对应关系(如引用[2]中同时配置了SpringCloudSpringCloudAlibaba的依赖管理)。因此,我们给出一个通用的解决方案,并提醒用户注意版本兼容性。</think>### 解决 Maven 依赖 `org.springframework.cloud:spring-cloud-dependencies:2023.0.3` 找不到的问题 #### 问题原因分析 1. **版本不兼容** Spring Cloud 版本需与 Spring Boot 版本严格匹配。若 Spring Boot 版本过低(如 `1.5.9`),无法支持 `2023.0.3` 等新版本 Spring Cloud[^3]。 2. **依赖未声明版本** Maven 未在 `<dependencyManagement>` 中明确指定 Spring Cloud 版本,导致无法解析依赖[^2]。 3. **仓库配置问题** 本地仓库或镜像仓库(如阿里云)未同步最新版本,或网络问题导致下载失败。 --- #### 解决方案 ##### 步骤 1:确认版本兼容性 - **检查 Spring Boot 版本** 在 `pom.xml` 中确认 `<parent>` 的 Spring Boot 版本: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.5</version> <!-- 需 ≥3.2.x 才兼容 Spring Cloud 2023.0.3 --> </parent> ``` - **版本匹配规则**: - Spring Cloud `2023.0.x` ➜ 需 Spring Boot `3.2.x` - Spring Cloud `2021.0.x` ➜ 需 Spring Boot `2.6.x~2.7.x` - 版本映射表:[官方文档](https://spring.io/projects/spring-cloud#overview) ##### 步骤 2:添加依赖管理 在 `pom.xml` 中添加 `<dependencyManagement>` 明确指定版本: ```xml <dependencyManagement> <dependencies> <!-- Spring Cloud BOM --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2023.0.3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ``` ##### 步骤 3:检查仓库配置 1. **确保仓库包含新版本** 访问 [Maven Central](https://central.sonatype.com/artifact/org.springframework.cloud/spring-cloud-dependencies/2023.0.3) 确认版本存在。 2. **更新 Maven 镜像**(以阿里云为例): ```xml <mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>阿里云镜像</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> ``` 3. **清理本地仓库缓存**: ```bash mvn dependency:purge-local-repository ``` ##### 步骤 4:降级版本(若需兼容旧项目) 若无法升级 Spring Boot,改用兼容版本(如 Spring Boot `2.7.x`): ```xml <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2021.0.7</version> <!-- 兼容 Spring Boot 2.6.x~2.7.x --> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ``` --- #### 验证是否解决 1. 执行依赖树检查: ```bash mvn dependency:tree -Dincludes=org.springframework.cloud ``` 2. 确认输出包含: ``` [INFO] +- org.springframework.cloud:spring-cloud-dependencies:pom:2023.0.3:import ``` > **关键提示**:Spring Cloud 版本命名从 `2020.0.0` 开始采用 `YYYY.MINOR.MICRO` 格式(原 `Hoxton`、`Greenwich` 等名称已弃用)[^3]。 --- ### 相关问题 1. **如何排查 Maven 依赖冲突?** 2. **Spring Boot 与 Spring Cloud 的版本兼容性规则是什么?** 3. **Maven 镜像仓库配置失效时如何快速修复?**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值