springcloud eureka增加安全认证

文章介绍了在SpringCloud架构中,当Eureka服务在本地运行时,其地址通常为localhost:port,但在K8s部署时需要额外暴露端口并进行安全配置。涉及的步骤包括在POM文件中添加安全相关的依赖,修改YAML配置文件以设置serviceUrl,以及在Eureka启动类中启用Web安全配置。由于配置中心Config服务有默认的用户和密码,需要相应配置以允许服务正常启动。
摘要由CSDN通过智能技术生成

网上很多资料写的不全,不细致。
springcloud架构,本地运行代码是eureka地址一般为localhost:port(自己暴露的端口),例如http://localhost:9000/ ,但是如果在服务器,且使用k8s部署,一般会另外暴露端口。
且更改配置与springcloud版本有关,
首先eureka服务pom文件增加包

<dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
</dependency>
<!--        添加安全认证-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

其次eureka服务更改yaml文件配置,修改serviceUrl,增加

eureka:
	client:
		serviceUrl:
		     defaultZone: http://${security.user.name}:${security.user.password}@${eureka.instance.hostname}:${server.port}/eureka/
security:
  user:
    name: xxx
    password: xxx

最后修改eureka启动类,新增以下代码

@EnableWebSecurity
    public class EurekaConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().disable()//禁用掉 csrf 跨域攻击,以免我们的服务无法注册到 eureka
                    .authorizeRequests()//需要认证所有的请求
                    .mvcMatchers("/eureka/**").permitAll()//符合以上路径规则的放行
                    .mvcMatchers("/actuator/**").permitAll()//放行
                    .anyRequest().authenticated().and().httpBasic();//剩余的所有的请求都需要验证
        }
    }

在这里插入图片描述

最终效果
在这里插入图片描述

注意!

发现业务服务无法启动,无法拉取配置中心config的配置,目前排查原因是config本身有默认的用户和随机生成的密码,在其他服务增加config账号密码配置后可以正常启动。
config服务启动类增加代码,如下:

@EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().disable()//禁用掉 csrf 跨域攻击,以免我们的服务无法注册到 eureka
                    .authorizeRequests()//需要认证所有的请求
                    .mvcMatchers("/**").permitAll()//放行
                    .anyRequest().authenticated().and().httpBasic();//剩余的所有的请求都需要验证
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值