我有一个使用微服务架构的应用程序,服务受Spring OAuth2客户端凭据授予类型的保护。我们使用spring WebClient和spring OAuth客户端库从一个服务调用另一个服务,因为它透明地处理OAuth凭据的获取。
正如我们所知,Spring(OAuth客户端)会调用授权服务器,在Auth服务器没有令牌或当前令牌过期时,从Auth服务器请求一个新令牌。每当Spring(OAuth客户端)调用OAuth服务器时,我们如何在客户端记录语句?我们希望记录此语句,以查看OAuth客户端库调用授权服务器的频率。
public WebClient webClient()
{
return WebClient.builder()
.apply(filter())
.baseUrl("http://localhost:8082/resource")
.build();
}
public Consumer<Builder> filter()
{
ServletOAuth2AuthorizedClientExchangeFilterFunction oAuth =
new ServletOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager);
oAuth.setDefaultClientRegistrationId("my-client");
return oAuth.oauth2Configuration();
}
定义向授权服务器发送令牌请求时记录的自定义令牌客户端。
@Slf4j
public class LoggingClientCredentialsTokenResponseClient
implements OAuth2AccessTokenResponseClient<OAuth2ClientCredentialsGrantRequest> {
private DefaultClientCredentialsTokenResponseClient delegate =
new DefaultClientCredentialsTokenResponseClient();
@Override
public OAuth2AccessTokenResponse getTokenResponse(
OAuth2ClientCredentialsGrantRequest clientCredentialsGrantRequest) {
log.debug("Sending request {}", clientCredentialsGrantRequest);
var response = delegate.getTokenResponse(clientCredentialsGrantRequest);
log.debug("Received response {}", response);
return response;
}
}
创建使用自定义令牌客户端的授权客户端管理器。
@Bean
public OAuth2AuthorizedClientManager authorizedClientManager(
ClientRegistrationRepository clientRegistrationRepository,
OAuth2AuthorizedClientService authorizedClientService) {
var authorizedClientProvider = OAuth2AuthorizedClientProviderBuilder.builder()
.clientCredentials(builder ->
builder.accessTokenResponseClient(
new LoggingClientCredentialsTokenResponseClient()))
.build();
var authorizedClientManager =
new AuthorizedClientServiceOAuth2AuthorizedClientManager(
clientRegistrationRepository, authorizedClientService);
authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);
return authorizedClientManager;
}
创建使用授权客户端管理器的WebClient。
@Bean
public WebClient oauth2WebClient(
WebClient.Builder webClientBuilder,
OAuth2AuthorizedClientManager authorizedClientManager) {
var oauth2Filter =
new ServletOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager);
oauth2Filter.setDefaultClientRegistrationId("my-client");
return webClientBuilder.apply(oauth2Filter.oauth2Configuration())
.baseUrl("http://localhost:8082/resource")
.build();
}
我正在尝试使用Spring 5 WebClient记录请求。你知道我怎样才能做到吗? (我使用的是Spring5和Spring靴2) 代码目前如下所示:
我是Spring WebClient的新手。有人能建议记录来自另一个WebService的REST请求和响应的最佳方法吗? 我已经看到了一个在问题中记录请求的示例,但也必须记录响应和POST调用的请求。如何记录Spring 5 WebClient调用 谢谢你。
我正在使用Spring WebClient下载文件,如下所示: 文件下载得很好。我唯一挣扎的是,当响应为200时,我只想像这样记录一行: 我也试过了,但没有得到我想要的-如何记录Spring WebClient响应 简而言之,是否有某种方法可以在不编写单独的的情况下实现上述目标?在这里感到迷失和无知。这方面的任何指针都将受到高度赞赏。
我试图从DynamoDB表中设置ElasticSearch导入过程。我已经创建了AWS Lambda并启用了带有触发器的DynamoDB流,该触发器为每个添加/更新的记录调用我的Lambda。现在我想执行初始种子操作(将DynamoDB表中当前的所有记录导入ElasticSearch)。我该怎么做?有没有办法让表中的所有记录都“重新处理”并添加到流中(这样我的lambda就可以处理它们)?还是最好
我的日志功能在cxf client 3.3.4版本中运行良好,但当soap调用出现超时错误(java.net.SocketTimeoutException)时,不会记录入站消息。请告知如何/配置什么以获取要记录的入站邮件? log4j。xml
在spring中提供了三种不同的方法来连接响应端: 我的目标是记录每个响应(标题状态代码),不管结果如何。 我怎样才能知道上述哪种方法是正确的?