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 获取凭据,以及有关应用程序的其他详细信息。
复制链接