gpt4 book ai didi

spring-cloud - 保护使用 Spring Cloud 和 Netflix 的 Eureka 和 Feign 的微服务

转载 作者:行者123 更新时间:2023-12-04 04:51:30 25 4
gpt4 key购买 nike

我正在尝试找出使用 Spring Cloud 和 Netflix 的堆栈构建和实现微服务的最佳方法,特别是使用 Eureka 和 Feign。我有几个与安全相关的问题:

  • 我已经看到您可以使用用户名/密码凭据配置 Eureka Server。这可以阻止未经授权的应用程序,但是每个应用程序都必须共享凭据才能访问 Eureka。有没有一种简单的方法来创建凭证注册表,以便每个微服务都可以拥有自己的凭证? (将它 Hook 到 Spring Security 的堆栈中会很不错——UserDetailService 等)
  • 一旦微服务连接起来并通过 feign 进行通信,是否可以将原始请求中使用的凭据共享/传递给对其他微服务进行的其他调用?因此,如果“Jim”请求 /foos餐饮服务 , 和 餐饮服务 请求 /bars酒吧服务 , 酒吧服务 会知道是吉姆要求他们吗?

  • Jim > FooService > BarService - BarService 知道请求正在为 Jim 处理...

    最佳答案

    大卫。你可能想看看我写的一篇关于保护 spring 云服务的文章。 Spring 团队在很大程度上将这个话题留给了开发人员,因为组织之间的安全实现差异很大。此示例在 eureka 和配置服务器上使用基本身份验证。

    http://www.baeldung.com/spring-cloud-securing-services

    一些小收获应该是:除了系统其余部分的任何其他类型的身份验证之外,必须在配置和发现服务器上定义身份验证。这两个服务器必须处理自己的身份验证,因为它们通常需要在身份验证服务器启动之前运行(因为它从配置服务中提取它的配置并注册到发现服务)。

    服务到服务的通信是一种不同的野兽。您必须问自己的问题,就像 David 所说的,是您运行的服务是否具有 ip 安全性,它们是否暴露于整个网络,您的应用程序中在哪里进行身份验证。如果没有这些问题,就很难给出具体的建议。

    这方面的一些一般建议可能是:

  • 如果您的服务在 IP 防火墙后面运行,您可以指定一个唯一的 header 来验证任何进入的服务。这样,您实际上不需要为内部网络指定权限,只需识别每个服务就足够了。您甚至可以将特定 IP 地址列入白名单以始终允许。
  • 如果您正在运行这些暴露于网络的服务,您可能希望将所有流量引导回您的网关(这也应该是您的应用程序进行身份验证的地方)。如果您收到 403,那么您应该以编程方式执行登录并使用 session ID 重试请求。如果您使用 spring-session 配置您的系统,每个服务将自动提取该服务的身份验证详细信息。

  • 这些只是众多可能性中的两个。我不确定您在编写这些安全配置时有多舒服,因此如果您需要更多帮助,请将您的问题归结为一个场景,我将尝试为您的用例编写一个通用解决方案。

    关于spring-cloud - 保护使用 Spring Cloud 和 Netflix 的 Eureka 和 Feign 的微服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30147541/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com