SpringBoot Admin 访问客户端时自定义认证流程

问题描述

我有许多应用程序使用 SpringBoot Admin Client 向 SpringBoot Admin 应用程序报告。我们最近正在建设的项目之一是使用自定义 JWT/刷新令牌身份验证流程,我希望 SpringBoot 管理员在访问执行器端点之前使用它,以便我也可以保护它们。

该流程通过将凭据发送到 /v1/auth/login 来工作,这将为用户提供带有到期日期和刷新令牌的 JWT 令牌。 JWT 仅在短时间内有效,之后需要刷新并与作为 Bearer-token 的请求一起提交。

我发现这个 this thread 有点相关,但我需要能够看到它试图访问哪个端点,因为并非所有应用程序都使用相同类型的身份验证。

有什么方法可以配置它以添加具有正确标头的 Authorization 标头,给出与特定模式匹配的 URL 或客户端名称?最好作为某些组件的一部分,可以将 JWT/到期/刷新令牌作为其状态的一部分,因此我可以在必要时刷新它。

解决方法

是否有一些应用程序标识符(例如应用程序名称)并基于此区分身份验证是否足够?


  @Bean
  public HttpHeadersProvider customHttpHeadersProvider(YourCustomProperties properties) {
    return instance -> {
      if (properties.getAppNames().contains(instance.getRegistration().getName())) {
        // do jwt stuff here
        return new HttpHeaders();
      }else {
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add("X-CUSTOM","My Custom Value");
        return httpHeaders;
      }
    };
  }

不确定从 instance 获取的最佳标识符是什么,但这可行。