【问题标题】:Access secured actuators from Spring Boot Admin with Kubernetes Service Discovery使用 Kubernetes 服务发现从 Spring Boot Admin 访问安全执行器
【发布时间】:2021-05-17 07:20:50
【问题描述】:

我有一个 Spring Boot Admin 应用程序,它使用 Kubernetes 服务发现来获取 Spring Boot 客户端应用程序。

spring:
  cloud:
      kubernetes:
        discovery:
          all-namespaces: true
          service-labels:
            springbootadmin: true
        reload:
          enabled: true
          period: 60s
          strategy: refresh

如果没有安全的执行器端点,这可以正常工作。

但是一旦客户端执行器端点受到基本身份验证的保护,这将不再起作用。 Spring Boot Admin Documentation 描述了如何将身份验证数据添加到 Spring Boot Admin Server 位,它没有描述通过 Kubernetes 发现服务时如何提供此信息。

我已经尝试过这些配置。但它们不起作用:

  1. Spring Boot Admin Docs: spring.boot.admin.instance-auth.default-user-name + password
  2. Spring Boot Admin Tutorial spring.boot.admin.client.instance.metadata.user.name + password

我还找到了一个描述如何configure the credentials in the Kubernetes annotations 的答案。这可行,但我更愿意在 Spring Boot Admin 配置(我可以在其中使用 Secrets)中配置凭据,而不是将 Kubernetes 配置中的每个服务单独配置为不安全标签。

我认为我必须在服务发现元数据中注入凭据。但是怎么做呢?

编辑

我检查了服务发现,没有发现可以提供的身份验证配置选项:

  1. 类 KubernetesDiscoveryProperties.Metadata
  2. 类 de.codecentric.boot.admin.server.cloud.discovery.DefaultServiceInstanceConverter

【问题讨论】:

  • “我想保护客户端执行器端点”是什么意思。端点位于服务器端。您想知道如何保护执行器端点吗?或者您想知道如何配置客户端以访问受某些凭据保护的执行器端点?
  • @mentallurg 我想知道 Spring Boot Admin 如何访问已经受保护的端点。我也更新了我的问题。

标签: spring-boot spring-boot-admin


【解决方案1】:

可以选择在 SBA 发送给客户端的请求中添加自定义标头:

@Bean
public HttpHeadersProvider customHttpHeadersProvider() {
    return (instance) -> {
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add("Authorization", "Basic bXlTcGVjaWFsVXNlcm5hbWU6bXlTcGVjaWFsUGFzc3dvcmQ=");
        return httpHeaders;
    };
}

【讨论】:

    【解决方案2】:

    可以通过以下设置来设置身份验证:

    spring:
      boot:
        admin:
          instance-auth:
            default-user-name: user
            default-password: pw
    

    这些设置由配置类AdminServerInstanceWebClientConfiguration 读取,该类实例化一个bean basicAuthHttpHeadersProvider

    【讨论】:

      猜你喜欢
      • 2018-04-21
      • 2018-01-23
      • 2018-02-27
      • 2021-04-22
      • 1970-01-01
      • 2020-01-03
      • 2020-12-13
      • 2020-07-26
      • 1970-01-01
      相关资源
      最近更新 更多