Eureka配置用户认证

版权声明: https://blog.csdn.net/GISuuser/article/details/89401266

Eureka在注册于消费服务的过程中,可以开启用户认证。首先在注册中心要依赖

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

因为这里的sping boot用的是2.0以上版本,security对应的也是2.0以上的版本。网上很多都是1.5版本的方法。这里总结一下如何使用的。

       首先要移除security默认的用户认证,security默认的用户名是user,密码在启动的时候控制台里随机生成。默认是不支持1.5的使用用户名和密码的方式的,关闭的话需要在主类上添加

@EnableEurekaServer
@SpringBootApplication
@EnableAutoConfiguration(exclude = {
        org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
})//关闭默认用户认证
public class EurkaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurkaServerApplication.class, args);
    }


application.yml文件中添加,用户名和密码

spring:
 security:
  basic:
    enabled: true               # 开启基于HTTP basic的认证
  user:
    name: user                  # 配置登录的账号是user
    password: password123       # 配置登录的密码是password123

到这里还不算结束,因为高版本的security默认认加上了 csrf 拦截,不移除的话,client会报错,无法进行服务注册

package com.example.eurka.eurkaserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
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;

@EnableEurekaServer
@SpringBootApplication
@EnableAutoConfiguration(exclude = {
        org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
})//关闭默认用户认证
public class EurkaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurkaServerApplication.class, args);
    }



    /**
     * 2.1版本的security默认加上了 csrf 拦截, 所以需要通过重写方法, 把csrf拦截禁用
     * 不写,客户端无法注册服务
     */
    @EnableWebSecurity
    static class WebSecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().disable();
            super.configure(http);
        }
    }
}

到这里配置就结束了,client在注册时候要修改一下url

#修改前
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
#修改后
eureka.client.serviceUrl.defaultZone=http://user:password123@localhost:8761/eureka/

直接访问eureka,直接提示输入用户名和密码

输入用户名和密码后,在Eureka页面里可以看到注册的服务

展开阅读全文

没有更多推荐了,返回首页