问题描述
我有许多应用程序使用 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
获取的最佳标识符是什么,但这可行。