Spring Cloud Eureka 加入 Security进行安全认证

Spring Cloud Eureka 加入 Security进行安全认证
延续之前搭建的工程 服务端eureka-server,客户端实例服务 pay;
本次都是用高版本:
在这里插入图片描述在这里插入图片描述
1 服务端eureka-server
1) pom.xml加入security依赖

        
            org.springframework.boot
            spring-boot-starter-security
        

2)高版本已经放弃之前配置文件的方式
Spring Cloud Eureka 加入 Security进行安全认证_第1张图片
所以需要自定义security配置开启basic认证,创建SecurityConfig类

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Bean
    public PasswordEncoder passwordEncoder() {
        return PasswordEncoderFactories.createDelegatingPasswordEncoder();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
   
        auth.inMemoryAuthentication().withUser("admin").password("123456").roles("ADMIN");
       //这样,页面提交时候,密码以明文的方式进行匹配
        auth.inMemoryAuthentication().passwordEncoder(new MyPasswordEncoder()).withUser("wangpeng").password("123456").roles("ADMIN");

    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().ignoringAntMatchers("/eureka/**");
        super.configure(http);
    }
}

解决问题 java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"
这是因为Spring boot 2.1.3引用的security 依赖是 spring security 5.X版本,此版本需要提供一个PasswordEncorder的实例,否则后台汇报错误。


public class MyPasswordEncoder implements PasswordEncoder {
    @Override
    public String encode(CharSequence charSequence) {
        return charSequence.toString();
    }

    @Override
    public boolean matches(CharSequence charSequence, String s) {
        return s.equals(charSequence.toString());
    }
}

2 eureak客户端 pay

  1. 配置文件修改,向eureka-server注册URL的改为:
eureka:
  client:
    registerWithEureka: true   #注册到eureka-server
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://wangpeng:[email protected]:8761/eureka/
  1. 启动两个服务访问 注册服务中心客户端:
    Spring Cloud Eureka 加入 Security进行安全认证_第2张图片
    Spring Cloud Eureka 加入 Security进行安全认证_第3张图片

你可能感兴趣的:(spring,cloud)