Http адаптер исходящего канала с базовой аутентификацией
Я хочу использовать Spring Boot и Integration DSL для отправки сообщений в виде HTTP Post в службу отдыха. У кого-нибудь есть пример, как это сделать с (базовой) аутентификацией?
Все остальное вроде работает нормально. Журнал показывает "org.springframework.web.client.HttpClientErrorException: 401 Unauthorized".
1 ответ
На самом деле ничего общего с Basic Auth
со стороны интеграции весны.
Это ответственность ClientHttpRequestFactory
,
Например, я делал что-то вроде этого:
@Bean
public ClientHttpRequestFactory clientHttpRequestFactory(@Value("username") String username,
@Value("password") String password) {
HttpClient httpClient = HttpClientBuilder.create().
setDefaultCredentialsProvider(getCredentialsProvider(username, password))
.build();
HttpComponentsClientHttpRequestFactory clientHttpRequestFactory =
new HttpComponentsClientHttpRequestFactory(httpClient);
return clientHttpRequestFactory;
}
private CredentialsProvider getCredentialsProvider(final String username, final String password) {
CredentialsProvider cp = new BasicCredentialsProvider();
cp.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
new UsernamePasswordCredentials(username, password));
return cp;
}
И залить это clientHttpRequestFactory
в Http.outboundGateway().requestFactory()
,
Все остальные ClientHttpRequestFactory
могут быть другие способы настройки Basic Auth
по их запросам объекты.