【发布时间】:2015-07-20 18:27:47
【问题描述】:
我正在尝试找出使用 Spring Cloud 和 Netflix 的堆栈,特别是使用 Eureka 和 Feign 来构建和实现微服务的最佳方法。我对每个问题都有一些与安全相关的问题:
我看到您可以使用用户名/密码凭据配置 Eureka Server。这可以阻止未经授权的应用程序,但是每个应用程序必须共享凭据才能访问 Eureka。有没有一种简单的方法来创建凭据注册表,以便每个微服务都可以拥有自己的? (将它挂接到 Spring Security 的堆栈中会很不错——
UserDetailService等)一旦微服务连接起来并通过 feign 进行通信,是否可以将原始请求中使用的凭据共享/传递给对其他微服务进行的其他调用?因此,如果“Jim”在 FooService 上请求
/foos,并且 FooService 在 BarService、BarService 上请求/bars会知道是吉姆要求他们吗?
Jim > FooService > BarService - BarService 知道正在为 Jim 处理请求...
【问题讨论】:
-
1.可以使用 Spring Security 保护 Eureka Server。我们没有任何自动配置。保护 eureka 目前是开发人员的一项工作。 2. 就 Feign 而言,您可以连接
RequestInterceptors,它可以从您想要的任何地方提取身份验证并将其添加到后续请求中。同样,这是一个练习,我们不会自动执行任何操作。 -
@spencergibb Re 1:在服务器上保护它是有道理的,而且是直截了当的,但是我们如何让客户端知道所说的安全性呢?答案 2 是完美的 :) 谢谢
-
这对于一般的服务来说是一个大问题。您可以在配置服务器中加密凭证,那么您如何保护呢?您可以使用证书。您可以使用网络安全。您可以将凭据放在环境变量中。我们还没有解决这个问题。
-
对不起,应该更清楚一点:假设我们使用 Basic Auth 保护 Eureka Server,那么我们如何配置 EurekaClient 以包含 Authorization 标头?我见过像
EurekaClientConfig这样的东西,但没有处理身份验证的概念 -
我们把用户名和密码放在eureka url
http://user:pass@host:port/eureka.
标签: spring-cloud netflix-eureka netflix-feign