美文网首页
spring cloud eurake server 添加安全组

spring cloud eurake server 添加安全组

作者: simians | 来源:发表于2019-02-22 16:01 被阅读0次

    生产环境下eurake server 如果不添加安全认证是很不安全的因此添加spring securityl来实现访问验证
    spring cloud 版本为 Greenwich.RELEASE
    spring boot 版本为2.1.2.RELEASE

    首先添加依赖

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

    配置yml

    server:
      port: 8771
    spring:
      application:
        name: user
      security:#安全认证
        user:
          name: admin #设置用户名
          password: admin  #设置密码
    eureka:
      instance:
        hostname: localhost
      client:
        serviceUrl:
          defaultZone: http://admin:admin@localhost:8770/eureka/
    #name:password@ 来添加注册服务是的验证 如admin:admin@
    

    至此完成注册中心的配置
    但是还有一个问题,添加完这些配置后服务无法注册,百度之后说是
    spring security 默认开启 csrf,需要关闭因此需要关闭。

    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    @EnableWebSecurity
    @Configuration
    public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().disable();
            super.configure(http);
        }
    }
    

    再次启动就可以了

    需要注册的接口需要在路径上添加注册验证
    http://userName:password@ip:port/eureka/
    用户名,密码是在eureka server 里设置的
    eg:
    http://admin:admin@localhost:8770/eureka/

    server:
      port: 8771
    spring:
      application:
        name: user
    eureka:
      instance:
        hostname: localhost
      client:
        serviceUrl:
          defaultZone: http://admin:admin@localhost:8770/eureka/
    

    如果不添加就会报如下错误

    com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
        at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:112) ~[eureka-client-1.9.8.jar:1.9.8]
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.9.8.jar:1.9.8]
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) ~[eureka-client-1.9.8.jar:1.9.8]
        at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.9.8.jar:1.9.8]
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.9.8.jar:1.9.8]
        at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:829) ~[eureka-client-1.9.8.jar:1.9.8]
        at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:121) ~[eureka-client-1.9.8.jar:1.9.8]
        at com.netflix.discovery.InstanceInfoReplicator$1.run(InstanceInfoReplicator.java:101) [eureka-client-1.9.8.jar:1.9.8]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_181]
        at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) [na:1.8.0_181]
        at java.util.concurrent.FutureTask.run(FutureTask.java) [na:1.8.0_181]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_181]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_181]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_181]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_181]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
    
    

    结束

    相关文章

      网友评论

          本文标题:spring cloud eurake server 添加安全组

          本文链接:https://www.haomeiwen.com/subject/npueyqtx.html