Eureka安全访问

简介:

背景

在使用注册服务的时候,我们启动了Eureka Server,然后在浏览器中输入http://ip:port/后,直接回车,就进入了Spring Cloud的服务治理页面,在公网部署应用存在以下问题:
1.普通用户可以直接访问我们的服务治理页面;
2.普通用户可以将自己的服务注册到生成环景。

解决方案

添加spring-security支持

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

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

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

关键配置

security:  
  basic:  
    enabled: true  
  user:  
    name: pikachu  # 用户名  
    password: pikachu   # 用户密码
defaultZone: ${EUREKA_DEFAULT_ZONE:http://pikachu:pikachu@localhost:8761/eureka/}

启动应用查看效果

image

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

正常服务注册效果比较

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

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

正常注册
image

优化

上述解决方案虽然解决了我们公网部署,生产环境部署的安全访问问题。但是针对团队内部的权限依然没有管理好。
通常我们的服务配置存放在两个地方:

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如下

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如下

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.团队内部成员权限隔离

相关文章
|
存储 固态存储 Java
Elasticsearch中查询性能优化
Elasticsearch中查询性能优化
470 0
|
传感器 网络协议 物联网
华为鸿蒙OS尖刀武器之分布式软总线技术
华为鸿蒙OS尖刀武器之分布式软总线技术
华为鸿蒙OS尖刀武器之分布式软总线技术
|
7月前
|
物联网 开发者
LoRA 模型的全新玩法——AutoLoRA 带你体验 LoRA 检索与融合的魔法
LoRA 模型的全新玩法——AutoLoRA 带你体验 LoRA 检索与融合的魔法
379 0
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
本文介绍了解决PHP常见问题的步骤,包括定位和创建`php.ini`文件,以及解决`mb_strlen()`函数未定义和DLL模块加载错误的具体方法。
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
|
11月前
|
人工智能 自然语言处理 测试技术
通义灵码入选 “2025 年值得关注的 AIGC 产品”,是唯一入选的 AI 编程产品
阿里云的通义灵码是一款基于通义大模型的AI编程助手,能够智能生成代码、优化结构、排查错误并自动生成测试用例,支持多种主流编程语言。在2025年入选《值得关注的AIGC产品》榜单,凭借卓越技术与广泛应用场景成为国内开发者首选。通义灵码已在国内多个行业落地,大幅提升开发效率与代码质量,同时针对中文编程场景优化,支持企业内网部署保障数据安全,推动AI编程技术在教育与科研领域的创新应用。
|
监控 IDE Java
Java项目调试实战:如何高效调试Spring Boot项目中的GET请求,并通过equalsIgnoreCase()解决大小写不一致问题
Java项目调试实战:如何高效调试Spring Boot项目中的GET请求,并通过equalsIgnoreCase()解决大小写不一致问题
635 0
|
传感器 监控 供应链
物联网技术在智慧工地中如何应用?
物联网技术在智慧工地的应用主要包括:实时项目状况监控,通过传感器监测环境条件;人员与设备管理,利用RFID或人脸识别技术记录考勤,实时追踪工人位置;环境与安全监控,确保符合安全标准;施工效率与成本控制,优化资源分配;远程监控与智能分析,支持远程决策;材料管理与供应链优化,减少浪费;智能施工与自动化,提高施工效率。这些应用提升了工地的智能化水平,加强了安全管理,促进了建筑行业的数字化转型。
748 3
|
机器学习/深度学习 计算机视觉
YOLOv5改进 | 二次创新篇 | 升级版本Dyhead检测头替换DCNv3 实现完美升级(全网独家首发)
YOLOv5改进 | 二次创新篇 | 升级版本Dyhead检测头替换DCNv3 实现完美升级(全网独家首发)
487 0
|
前端开发 程序员 调度
探索协程在 C++ 中的实现方式
探索协程在 C++ 中的实现方式
447 2
|
算法 Java 流计算
Java【算法分享 02】道格拉斯-普克 Douglas-Peucker 抽稀算法分析及15w个坐标点抽稀到3.7w耗时从360s+优化到365ms接近1000倍的速度提升(并行流+多线程+泛型)
Java【算法分享 02】道格拉斯-普克 Douglas-Peucker 抽稀算法分析及15w个坐标点抽稀到3.7w耗时从360s+优化到365ms接近1000倍的速度提升(并行流+多线程+泛型)
583 0

热门文章

最新文章