Spring boot 用于添加身份验证标头的WebClient筛选器
我将要实现许多对外部服务的请求,这些请求需要身份验证头 身份验证服务是一个外部服务,为了检索令牌,我需要进行HTTP调用 我正在考虑的策略是创建一个附加到WebClient的过滤器,该过滤器调用此服务来获取令牌,然后将其添加到头中 当然,我将实现一些缓存层来检索令牌,但关键是我将向我的请求添加一个请求Spring boot 用于添加身份验证标头的WebClient筛选器,spring-boot,http,webclient,spring-webclient,Spring Boot,Http,Webclient,Spring Webclient,我将要实现许多对外部服务的请求,这些请求需要身份验证头 身份验证服务是一个外部服务,为了检索令牌,我需要进行HTTP调用 我正在考虑的策略是创建一个附加到WebClient的过滤器,该过滤器调用此服务来获取令牌,然后将其添加到头中 当然,我将实现一些缓存层来检索令牌,但关键是我将向我的请求添加一个请求 你认为这是一个有效的方法吗?或者我应该在主请求之外显式调用身份验证服务吗?如果它是OAuth2,并且您的请求需要JWT令牌,Spring Security和WebClient也可以这样做(,)。我
你认为这是一个有效的方法吗?或者我应该在主请求之外显式调用身份验证服务吗?如果它是OAuth2,并且您的请求需要JWT令牌,Spring Security和
WebClient也可以这样做(,)。我不会在过滤器中实现此逻辑,而是创建一个WebClient
过滤器,为每个请求设置Authorization:Bearer XYZ
头,并从外部或通过Spring传递令牌
你也可以看看这个。它定期在后台线程中为您获取OAuth2令牌,您可以将其传递给WebClient
WebClient
的自定义筛选器可能如下所示:
private ExchangeFilterFunction authHeader(String token) {
return (request, next) -> next.exchange(ClientRequest.from(request).headers((headers) -> {
headers.setBearerAuth(token);
}).build());
}
如果是OAuth2,并且您的请求需要JWT令牌,那么Spring安全性和WebClient
也可以这样做(,)。我不会在过滤器中实现此逻辑,而是创建一个WebClient
过滤器,为每个请求设置Authorization:Bearer XYZ
头,并从外部或通过Spring传递令牌
你也可以看看这个。它定期在后台线程中为您获取OAuth2令牌,您可以将其传递给WebClient
WebClient
的自定义筛选器可能如下所示:
private ExchangeFilterFunction authHeader(String token) {
return (request, next) -> next.exchange(ClientRequest.from(request).headers((headers) -> {
headers.setBearerAuth(token);
}).build());
}
你能告诉我“字符串令牌”参数来自哪里吗?我的意思是,我们必须将此筛选器包括到Webclient.builder()中。。阶段因此,此参数在这里不可用,对吗?在使用生成器创建WebClient
时,您可以传递一个lambda函数,该函数委托调用您的令牌提供程序以检索最新令牌,而不是硬编码令牌。您能告诉我“字符串令牌”参数来自何处吗?我的意思是,我们必须将此筛选器包括到Webclient.builder()中。。阶段因此,此参数在这里不可用,对吗?在使用生成器创建WebClient
时,您可以传递lambda函数,委托调用您的令牌提供程序以检索最新令牌,而不是硬编码令牌