17.3.2 使用 Actuator 进行认证

在第 16.4 节中,我们讨论了如何使用 HTTP 基本验证,保护 Actuator 端点。这样做,就可以把所有不知道密码的人挡在门外。不幸的是,这也意味着 Admin 服务端也将无法使用 Actuator 端点,除非它知道用户名和密码。但是 Admin 服务端将如何获得那些凭据呢?

Admin 客户端应用程序,可以向 Admin 服务端提供其凭据。可以直接向 Admin 服务端注册,也可以通过 Eureka 被发现。如果应用程序直接向 Admin 服务端注册,那么它可以在注册时,将其凭据发送到 admin 服务端。您需要配置一些属性来启用该功能。

属性 spring.boot.admin.client.instance.metadata.user.namespring.boot.admin.client.instance.metadata.user.password 指定的凭据信息,Admin 服务端可以用来访问应用程序的 Actuator 端点。下面是 application.yml 中的代码片段,展示了如何设置这些属性:

spring:
  boot:
    admin:
      client:
        url: http://localhost:9090
        instance:
          metadata:
            user.name: ${spring.security.user.name}
            user.password: ${spring.security.user.password}

必须在每个注册的应用程序中设置用户名和密码属性,它本身与 Admin 服务端连接。且给定的值必须与 Actuator 端点 HTTP 基本身份验证中,所需的用户名和密码匹配。在本例中,它们被设置为 admin 和 password,这是为访问 Actuator 端点所需的凭据。

另一方面,如果应用程序被 Admin 服务端自动发现,就需要改为设置 eureka.instance.metadata-map.user.nameeureka.instance.metadata-map.user.password

eureka:
  instance:
    metadata-map:
      user.name: admin
      user.password: password

当应用程序向 Eureka 注册时,凭证将包含在 Eureka 注册记录的元数据中。Admin 服务端发现应用程序时,它从 Eureka 获取凭据,以及有关应用程序的其他详细信息。

最后更新于