Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Eureka安全访问

Eureka安全访问

原创
作者头像
3号攻城狮
发布于 2018-05-13 06:53:55
发布于 2018-05-13 06:53:55
3.7K3
举报

背景

在使用注册服务的时候,我们启动了Eureka Server,然后在浏览器中输入http://ip:port/后,直接回车,就进入了Spring Cloud的服务治理页面。

在公网部署应用存在以下问题:

1.普通用户可以直接访问我们的服务治理页面

2.普通用户可以将自己的服务注册到生成环景

解决方案

添加spring-security支持

代码语言:txt
AI代码解释
复制
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-security</artifactId>  
</dependency> 

在配置文件bootstrap.yml加入安全认证

代码语言:txt
AI代码解释
复制
spring:
  profiles: default
  cloud:
    config:
      enabled: false
# 安全认证的配置  
security:  
  basic:  
    enabled: true  
  user:  
    name: pikachu  # 用户名  
    password: pikachu   # 用户密码
eureka:
  instance:
    preferIpAddress: true
    leaseRenewalIntervalInSeconds: 1
    leaseExpirationDurationInSeconds: 3
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: ${EUREKA_DEFAULT_ZONE:http://pikachu:pikachu@localhost:8761/eureka/ }
    registryFetchIntervalSeconds: 1
  server:
    evictionIntervalTimerInMs: 1000

关键配置

代码语言:txt
AI代码解释
复制
security:  
  basic:  
    enabled: true  
  user:  
    name: pikachu  # 用户名  
    password: pikachu   # 用户密码
代码语言:txt
AI代码解释
复制
defaultZone: ${EUREKA_DEFAULT_ZONE:http://pikachu:pikachu@localhost:8761/eureka/}

启动应用查看效果

image.png
image.png

输入密码后可以正常访问页面

image.png
image.png

正常服务注册效果比较

使用默认配置做服务注册,可以看到服务注册失败。

image.png
image.png

调整配置后可以看到,服务正常启动

image.png
image.png

正常注册

image.png
image.png

优化

上述解决方案虽然解决了我们公网部署,生产环境部署的安全访问问题。但是针对团队内部的权限依然没有管理好。

通常我们的服务配置存放在两个地方:

代码语言:txt
AI代码解释
复制
1.application.yml
2.bootstrap.yml

项目都能从两个文件中读取配置。但是bootstrap.yml优先于application.yml加载,会初始化系统的环境配置信息。

当使用Spring Cloud时,通常从服务器加载不同环境的配置数据。为了获取URL(和其他连接配置,如密码等),我们就需要一个较早的或“bootstrap”配置。因此,我们可以将配置服务器属性放在bootstrap.yml中,该属性用于加载实际配置数据(通常覆盖application.yml 如果存在中的内容)。

Spring cloud 我们通常都会有config服务。通过config服务读取各个环境的配置信息,所有我们只需要在bootstrap.yml中配置信息来源。将具体的配置写入到application.yml中。

bootstrap.yml如下

代码语言:txt
AI代码解释
复制
spring:
  profiles: uat
  cloud:
    config:
      label: master
      name: cloud-demo-server
      discovery:
        serviceId: cloud-config-server
        enabled: true
      failFast: true
      retry:
        maxAttempts: 32
        multiplier: 1.5
        maxInterval: 10000

application.yml如下

代码语言:txt
AI代码解释
复制
spring:
  profiles: default
  cloud:
    config:
      enabled: false
# 安全认证的配置  
security:  
  basic:  
    enabled: true  
  user:  
    name: pikachu  # 用户名  
    password: pikachu   # 用户密码
eureka:
  instance:
    preferIpAddress: true
    leaseRenewalIntervalInSeconds: 1
    leaseExpirationDurationInSeconds: 3
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: ${EUREKA_DEFAULT_ZONE:http://pikachu:pikachu@localhost:8761/eureka/ }
    registryFetchIntervalSeconds: 1
  server:
    evictionIntervalTimerInMs: 1000

当然,在一些情况上不用我们不用那么区分这两个文件,只需要使用application文件即可,把全部选项都写在这里,效果基本是一致的,在不考虑上面的加载顺序覆盖的问题上。

总结

通过以上配置我们基本能解决Eureka的安全访问问题:

1.普通用户可以直接通过域名访问我们的服务治理页面;

2.普通用户可以将自己的服务注册到生产环境;

3.团队内部成员权限隔离

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
3 条评论
热度
最新
谢谢分享
谢谢分享
回复回复点赞举报
之前没有了解过Eureka,现在就去试试
之前没有了解过Eureka,现在就去试试
回复回复点赞举报
代码都贴出来 想必是极好的哈哈
代码都贴出来 想必是极好的哈哈
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Spring Cloud Config
config是Spring Cloud中的配置中心,在正式场景中,存在修改配置的情况,每次配置的修改都要进行重新打包,这是非常麻烦的一件事,可能还伴随着其他问题的引发。而config就可以将一些与启动无关的配置进行动态修改,并生效。以前要数据库进行配置的,现在也可以在config中完成。
迹_Jason
2019/05/28
8040
springcloud学习手册-Eureka常见问题总结
导读 | Eureka常见问题总结 一、配置方法问题汇总 1.1. Eureka Environment的配置: eureka.environment: 字符串 配置环境名称,可以在appliacti
程序源代码
2018/03/09
3.5K0
springcloud学习手册-Eureka常见问题总结
Spring-Cloud-config配置中心
解释: application: 配置文件的名字 profile:对应的环境 label:不同的分支
JokerDJ
2023/11/27
3760
Spring-Cloud-config配置中心
微服务中一个监控Spring Boot的神器
你是不是在一个月黑风高的晚上想过这么一件事情,就是想把spring boot actuator的那些endpoint可视化,是不是想着自己搞一个UI。 每当你有这种想法的时候,建议你一定要首先想想:开源世界是不是早就有人做了。 没错,有人为你做好了。其中最有名的当属spring-boot-admin这个项目了。 spring boot admin是个什么鬼呢?就是一个可以监控和管理spring boot应用的admin管理应用。原理很简单,就是把spring boot actuator中的那些endpoin
ImportSource
2018/04/03
9.6K2
微服务中一个监控Spring Boot的神器
Spring Cloud 教程 - Eureka Server
将groupId 为 org.springframework.cloud,artifactId 为spring-cloud-starter-netflix-eureka-server的依赖添加到项目中即可引入Eureka Server,具体版本号可以参考Spring Cloud Project 使用如下代码快速启动Eureka Server
代码拾遗
2018/09/30
6710
15分钟快速了解eureka及实战
我们不管在进行分布式开发还是微服务开发,都需要接触一个组件,那就是服务治理中心,必须有一个组件为你提供和发现服务的功能,注册中心可以由zookeeper、reids、eureka等框架担任,因为我们这个系列主讲springcloud,所以本篇文章主要介绍eureka组件,后面也会论述这几种注册中心的区别。
AI码师
2020/11/19
6010
15分钟快速了解eureka及实战
Spring Cloud Eureka详解
服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。
全栈程序员站长
2022/09/14
8280
Spring Cloud Eureka详解
Eureka服务配置与进阶
1. Eureka服务配置与进阶 1.1. 主要配置 1.1.1. 服务端(eureka.server.*) enableSelfPreservation默认true,启用注册中心的自保护机制,Eureka如果统计到15分钟之内损失>15%的微服务心跳,则会触发自保护机制,不再提出服务提供者 waitTimeInMsWhenSyncEmpty默认1000605,在Eureka服务器获取不到集群里对等服务器上的实例时,需要等待的时间,单位为毫秒,单机开发模式建议设置为0 1.1.2. 客户信息配置(eurek
老梁
2019/09/10
7250
Eureka服务配置与进阶
Spring-Cloud-Netflix-Eureka集群搭建
JokerDJ
2023/11/27
1990
Spring-Cloud-Netflix-Eureka集群搭建
Spring Cloud学习教程2【面试+工作】
Spring Cloud学习教程2【面试+工作】 1. 使用Feign实现声明式的REST调用 1.1. 分析 之前我们通过RestTemplate调用REST服务,代码是这样的: 虽然使用了Ribb
Java帮帮
2018/06/05
1.2K0
Spring Cloud(一)《服务集群注册与发现 Eureka》
1、对于能提供完整领域服务接口功能的RPC而言,例如;gRPC、Thrift、Dubbo等,服务的注册与发现都是核心功能中非常重要的一环,使得微服务得到统一管理。 2、在分布式领域中有个著名的CAP理论;一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance),这三个要素在分布式系统中,最多满足两个,不可能三者兼顾。 3、通常我们在使用dubbo时zookeeper作为注册中心以选主配置为核心,保证CP特性,即任何时刻对 Zookeeper 的访问请求能得到一致的数据结果,同时系统对网络分割具备容错性,但是它不能保证每次服务请求的可用性。 4、而 Spring Cloud Netflix 在设计 Eureka 时遵守的就是 AP 原则,因为对于服务发现而言,可用性比数据一致性显得尤为重要。 5、Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分,主要负责完成微服务架构中的服务治理功能,服务治理可以说是微服务架构中最为核心和基础的模块,他主要用来实现各个微服务实例的自动化注册与发现。 6、另外Eureka服务集群有自我保护模式,在每分钟收到心跳低于阀值时,就会触发自我保护;
小傅哥
2020/07/14
3960
Spring Cloud(一)《服务集群注册与发现 Eureka》
【愚公系列】2023年11月 Java教学课程 184-SpringCloud(Eureka注册中心)
微服务注册中心是一个管理微服务的工具,可以帮助微服务在分布式系统中发现、注册和协调服务之间的交互。它是微服务架构的核心组件之一,负责维护服务注册表,提供服务发现、负载均衡、故障恢复等功能,使得微服务能够更好地运行和协作。常见的微服务注册中心有Consul、Eureka、Zookeeper等。
愚公搬代码
2025/06/02
1040
【愚公系列】2023年11月 Java教学课程 184-SpringCloud(Eureka注册中心)
使用 Zuul、Ribbon、Feign、Eureka 和 Sleuth、Zipkin 创建简单spring cloud微服务用例-spring cloud 入门教程
Spring 框架提供了一组用于在 Java 生态中创建微服务的库。它们是 Spring Cloud 项目的一部分。今天我将向您展示如何使用 Spring Boot 和以下技术创建简单的微服务支手架:
jack.yang
2025/04/05
1280
使用 Zuul、Ribbon、Feign、Eureka 和 Sleuth、Zipkin 创建简单spring cloud微服务用例-spring cloud 入门教程
Spring Cloud Eureka动态扩容
前言 本文心得包括案例基于《重新定义》,动态扩容Eureka是为了不影响已运行服务的情况下进行扩容。
胖虎
2019/06/26
1.6K0
Spring Cloud Eureka动态扩容
spring cloud 配置中心配置哪些东西_druid连接池配置优化
前面我们演示的案例是我们有一个Config Server 和一个 Config Client ,我们的Config Client直接从Config Server读取配置,这里九存在一个比较严重的耦合问题,假如我们的单一的Config Server挂掉了的IP或者端口变化了,我们Config Client将无法读取配置。这里我们也可以将Config Server作为一个普通的微服务应用,纳入Eureka的服务治理体系中。这样我们的微服务应用就可以通过配置中心的服务名来获取配置信息,这种方式比起传统的实现模式来说更加有利于维护,因为对于服务端的负载均衡配置和客户端的配置中心指定都通过服务治理机制一并解决了,既实现了高可用,也实现了自维护。
全栈程序员站长
2022/11/17
8690
spring cloud 配置中心配置哪些东西_druid连接池配置优化
第四节 微服务OTRS SpringCould使用
1.1. 启动一个服务注册中心,只需要一个注解@EnableEurekaServer,这个注解需要在springboot工程的启动application类上加:
用户1418372
2018/09/13
5190
第四节 微服务OTRS SpringCould使用
EUREKA生产环境的参数如何优化?
之前微服务项目的时候一直没有时间去总结,最近闲下来了,可以好好的把以前学习的微服务的知识和微服务的项目好好总结归纳一下了。
技术从心
2020/03/10
3.1K0
EUREKA生产环境的参数如何优化?
Spring Cloud Eureka
注-第一个服务启动的时候存在java.net.ConnectException: Connection refused (Connection refused)的错误信息,不用理睬,只要最后服务端口显示就表示服务起来了。出现这个错误的原因是另一个服务还没起来,无法去对方服务进行注册,如果另一个服务起来之后,不存在问题了。
迹_Jason
2019/05/28
7270
springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin
springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin 相信现在已经有很多小伙伴已经或者准备使用springcloud微服务了,接下来为大家搭建一个微服务框架,后期可以自己进行扩展。会提供一个小案例: 服务提供者和服务消费者 ,消费者会调用提供者的服务,新建的项目都是用springboot,附源码下载,推荐使用coding地址下载,因为可以切换分支,后期可以及时更新。 coding仓库地址(推荐
用户2235302
2018/06/13
2.2K0
Spring Cloud 2.x系列之eureka注册中心单机
Spring Cloud Eureka是SpringCloud Netflix项目下的服务治理模块。而SpringCloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为SpringBoot应用提供了自配置的NetflixOSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。
BUG弄潮儿
2022/06/30
2280
Spring Cloud 2.x系列之eureka注册中心单机
推荐阅读
相关推荐
Spring Cloud Config
更多 >
交个朋友
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
加入架构与运维趋势交流群
技术趋势前瞻 架构演进方向
加入[架构及运维] 腾讯云技术交流站
云架构设计 云运维最佳实践
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档