SpringCloud如何配置Eureka授权

Posted 甜菜波波

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud如何配置Eureka授权相关的知识,希望对你有一定的参考价值。

  1. 现在已经成功的实现了一个Eureeka的服务启动以及微服务的注册配置操作,但是现在的程序有一个问题,你自己公司的Eureka服务应该可以注册的服务只能够是满足于认证要求的微服务,所有这样来在之前所进行的Eureka里面配置缺少了关键性的一步:安全认证,所以应该为Eureka配置上安全认证处理。

    【microcloud-eureka-7001】修改pom.xml配置文件,引入SpringSecurity依赖包。

    <project

            xmlns="http://maven.apache.org/POM/4.0.0"

            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        <parent>

            <artifactId>microcloud</artifactId>

            <groupId>com.gwolf</groupId>

            <version>1.0</version>

        </parent>

        

        <modelVersion>4.0.0</modelVersion>

        <groupId>com.gwolf</groupId>

        <artifactId>microcloud-eureka-7001</artifactId>

        <packaging>jar </packaging>

        <name>microcloud-eureka-7001</name>

        <url>http://maven.apache.org</url>

        <properties>

            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        </properties>

        <dependencies>

            <dependency>

                <groupId>ch.qos.logback</groupId>

                <artifactId>logback-core</artifactId>

            </dependency>

            <dependency>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-starter-jetty</artifactId>

            </dependency>

            <dependency>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-starter-web</artifactId>

            </dependency>

            <dependency>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-starter-test</artifactId>

                <scope>test</scope>

            </dependency>

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>springloaded</artifactId>

            </dependency>

            <dependency>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-devtools</artifactId>

            </dependency>

            <dependency>

                <groupId>org.springframework.cloud</groupId>

                <artifactId>spring-cloud-starter-eureka-server</artifactId>

            </dependency>

            <dependency>

                <groupId>org.springframework.cloud</groupId>

                <artifactId>spring-cloud-starter-config</artifactId>

            </dependency>

            <dependency>

                <groupId>org.springframework.cloud</groupId>

                <artifactId>spring-cloud-starter-config</artifactId>

            </dependency>

        

            <dependency>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-starter-security</artifactId>

            </dependency>

        </dependencies>

    </project>

    技术分享图片
  2. 【microcloud-eureka-7001】一旦我们的项目之中导入了Security开发包,则每一次启动微服务的时候都会自动生成一个密码,而这个密码由于会改变,所以一般都不使用,所以要修改application.yml配置文件,追加密码的配置项。

    server:

      port: 7001

    eureka:

      instance: #eureka实例定义

        hostname: eureka-7001.com #设置清理的间隔时间,默认这个时间使用的毫秒单单位(默认是60秒)

      client: #客户端进行Eureka注册的配置

          service-url: 

            defaultZone: http://eureka-7001.com:7001/eureka

          register-with-eureka: false #当前的微服务不注册到eureka之中

          fetch-registry: false

      server:

        enable-self-preservation: false #是否要设置成保护模式

        eviction-interval-timer-in-ms: 60000  #不通过eureka获取注册信息

    spring:

      application:

        name: microcloud-eureka-7001

    security:

      user:

        name: eureka

        password: eureka

    技术分享图片
  3. 此时访问Eureka的服务地址为:http://eureka:[email protected]:7001/,要求输入用户名和密码。

    技术分享图片
  4. 【microcloud-eureka-7001】所有注册到Eureka服务的地方都要加上用户名和密码。

    server:

      port: 7001

    eureka:

      instance: #eureka实例定义

        hostname: eureka-7001.com #设置清理的间隔时间,默认这个时间使用的毫秒单单位(默认是60秒)

      client: #客户端进行Eureka注册的配置

          service-url: 

            defaultZone: http://eureka:[email protected]:7001/eureka

          register-with-eureka: false #当前的微服务不注册到eureka之中

          fetch-registry: false

      server:

        enable-self-preservation: false #是否要设置成保护模式

        eviction-interval-timer-in-ms: 60000  #不通过eureka获取注册信息

    spring:

      application:

        name: microcloud-eureka-7001

    security:

      user:

        name: eureka

        password: eureka

    技术分享图片
  5. 【microcloud-provider-dept-8001】修改application.yml配置文件,进行授权配置。

    server:

      port: 8001

    mybatis:

      config-location: classpath:mybatis/mybatis.cfg.xml    # mybatis配置文件所在路径

      type-aliases-package: com.gwolf.vo       # 定义所有操作类的别名所在包

      mapper-locations:                                     # 所有的mapper映射文件

      - classpath:mybatis/mapper/**/*.xml

    spring:

      datasource:

        type: com.alibaba.druid.pool.DruidDataSource    # 配置当前要使用的数据源的操作类型

        driver-class-name: com.mysql.cj.jdbc.Driver      # 配置MySQL的驱动程序类

        url: jdbc:mysql://localhost:3306/mldn_1?serverTimezone=UTC   # 数据库连接地址

        username: root                                  # 数据库用户名

        password: root                            # 数据库连接密码

        dbcp2:                                          # 进行数据库连接池的配置

          min-idle: 5                                   # 数据库连接池的最小维持连接数

          initial-size: 5                               # 初始化提供的连接数

          max-total: 5                                  # 最大的连接数

          max-wait-millis: 200                          # 等待连接获取的最大超时时间

      application:

        name: microcloud-provider-dept

    eureka:

      client: #客户端进行Eureka注册的配置

        service-url: 

          defaultZone: http://eureka:[email protected]:7001/eureka

      instance:

        instance-id: dept-8001.com  #在信息列表中显示主机名称

        prefer-ip-address: true   #访问的路径变为IP地址

        lease-renewal-interval-in-seconds: 2  #设置心跳的时间间隔(默认是30秒)

        lease-expiration-duration-in-seconds: 5 #如果现在超过了5秒的间隔(默认90秒)

    info:

      app.name: gwolf-microcloud

      company.name: www.gwolf.com

      build.artifactId: $project.artifactId$

      build.version:  $project.version$

    技术分享图片
  6. 启动eureka注册服务和部门微服务,查看安全认证之后微服务是否注册成功了。

    技术分享图片

以上是关于SpringCloud如何配置Eureka授权的主要内容,如果未能解决你的问题,请参考以下文章

spring cloud 之eureka配置

SpringCloud:如何使用Eureka进行服务治理?

SpringCloud学习成长之路七 高可用配置中心

SpringCloud-Eureka-服务注册是如何发起的

SpringCloud组件:Eureka服务注册是采用主机名还是IP地址?

SpringCloud实战之初级入门— 服务注册与服务调用