> For the complete documentation index, see [llms.txt](https://potoyang.gitbook.io/spring-in-action-v5/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://potoyang.gitbook.io/spring-in-action-v5/di-17-zhang-guan-li-spring/17.3-bao-hu-admin-fu-wu-duan/17.3.2-shi-yong-actuator-jin-hang-ren-zheng.md).

# 17.3.2 使用 Actuator 进行认证

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

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

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

```yaml
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.name` 和 `eureka.instance.metadata-map.user.password`：

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

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