Skip to content
Snippets Groups Projects
Commit b174e3f1 authored by Jan Zickermann's avatar Jan Zickermann
Browse files

OZG-4095 config: Configure proxy

parent 69cb6a73
No related branches found
No related tags found
3 merge requests!9Draft: Ozg 4094 wiremock ausprobieren,!8OZG-4095 refactoring von web client zu rest client jan,!7Ozg-4094 Konfiguration für nachrichten-manager
Pipeline #1521 passed
...@@ -10,14 +10,17 @@ import org.springframework.context.annotation.Bean; ...@@ -10,14 +10,17 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.oauth2.client.AuthorizedClientServiceOAuth2AuthorizedClientManager; import org.springframework.security.oauth2.client.AuthorizedClientServiceOAuth2AuthorizedClientManager;
import org.springframework.security.oauth2.client.InMemoryOAuth2AuthorizedClientService; import org.springframework.security.oauth2.client.InMemoryOAuth2AuthorizedClientService;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProviderBuilder; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProviderBuilder;
import org.springframework.security.oauth2.client.endpoint.RestClientClientCredentialsTokenResponseClient; import org.springframework.security.oauth2.client.endpoint.RestClientClientCredentialsTokenResponseClient;
import org.springframework.security.oauth2.client.http.OAuth2ErrorResponseErrorHandler;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.client.OAuth2ClientHttpRequestInterceptor; import org.springframework.security.oauth2.client.web.client.OAuth2ClientHttpRequestInterceptor;
import org.springframework.security.oauth2.core.http.converter.OAuth2AccessTokenResponseHttpMessageConverter;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestClient; import org.springframework.web.client.RestClient;
...@@ -53,30 +56,40 @@ public class ApiClientConfiguration { ...@@ -53,30 +56,40 @@ public class ApiClientConfiguration {
new OAuth2ClientHttpRequestInterceptor(authorizedClientManager(clientRegistrations)); new OAuth2ClientHttpRequestInterceptor(authorizedClientManager(clientRegistrations));
requestInterceptor.setClientRegistrationIdResolver(request -> "osi2"); requestInterceptor.setClientRegistrationIdResolver(request -> "osi2");
return RestClient.builder() return defaultRestClientBuilder()
.requestInterceptor(requestInterceptor) .requestInterceptor(requestInterceptor)
.build(); .build();
} }
private RestClient.Builder defaultRestClientBuilder() {
return RestClient.builder()
.requestFactory(createProxyRequestFactory());
}
private ClientHttpRequestFactory createProxyRequestFactory() { private ClientHttpRequestFactory createProxyRequestFactory() {
var requestFactory = new HttpComponentsClientHttpRequestFactory(); var requestFactory = new HttpComponentsClientHttpRequestFactory();
if (proxyConfiguration.isEnabled()) { if (proxyConfiguration.isEnabled()) {
var credsProvider = new BasicCredentialsProvider(); requestFactory.setHttpClient(
credsProvider.setCredentials( HttpClientBuilder.create()
new AuthScope(proxyConfiguration.getHost(), proxyConfiguration.getPort()),
//TODO: hier brauchen wir noch eine Ordentliche Lösung
// new UsernamePasswordCredentials(proxyConfiguration.getUsername(), proxyConfiguration.getPassword().toCharArray())
new UsernamePasswordCredentials("", "".toCharArray())
);
var httpClient = HttpClientBuilder.create()
.setProxy(new HttpHost(proxyConfiguration.getHost(), proxyConfiguration.getPort())) .setProxy(new HttpHost(proxyConfiguration.getHost(), proxyConfiguration.getPort()))
.setDefaultCredentialsProvider(credsProvider) .setDefaultCredentialsProvider(basicCredentialsProviderForProxy())
.build(); .build()
requestFactory.setHttpClient(httpClient); );
} }
return requestFactory; return requestFactory;
} }
private BasicCredentialsProvider basicCredentialsProviderForProxy() {
var credentialsProvider = new BasicCredentialsProvider();
var username = proxyConfiguration.getUsername();
var password = proxyConfiguration.getPassword();
if (username != null && password != null) {
credentialsProvider.setCredentials(new AuthScope(proxyConfiguration.getHost(), proxyConfiguration.getPort()),
new UsernamePasswordCredentials(username, password.toCharArray()));
}
return credentialsProvider;
}
private AuthorizedClientServiceOAuth2AuthorizedClientManager authorizedClientManager( private AuthorizedClientServiceOAuth2AuthorizedClientManager authorizedClientManager(
ClientRegistrationRepository clientRegistrations) { ClientRegistrationRepository clientRegistrations) {
var clientService = new InMemoryOAuth2AuthorizedClientService( var clientService = new InMemoryOAuth2AuthorizedClientService(
...@@ -99,10 +112,22 @@ public class ApiClientConfiguration { ...@@ -99,10 +112,22 @@ public class ApiClientConfiguration {
private RestClientClientCredentialsTokenResponseClient clientCredentialsTokenResponseClient() { private RestClientClientCredentialsTokenResponseClient clientCredentialsTokenResponseClient() {
var client = new RestClientClientCredentialsTokenResponseClient(); var client = new RestClientClientCredentialsTokenResponseClient();
configureClientCredentialsRestClient(client);
configureParametersForTokenRequests(client); configureParametersForTokenRequests(client);
return client; return client;
} }
private void configureClientCredentialsRestClient(RestClientClientCredentialsTokenResponseClient client) {
client.setRestClient(defaultRestClientBuilder()
.messageConverters(messageConverters -> {
messageConverters.clear();
messageConverters.add(new FormHttpMessageConverter());
messageConverters.add(new OAuth2AccessTokenResponseHttpMessageConverter());
})
.defaultStatusHandler(new OAuth2ErrorResponseErrorHandler())
.build());
}
private void configureParametersForTokenRequests(RestClientClientCredentialsTokenResponseClient client) { private void configureParametersForTokenRequests(RestClientClientCredentialsTokenResponseClient client) {
client.addParametersConverter(source -> { client.addParametersConverter(source -> {
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>(); MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
......
...@@ -83,8 +83,10 @@ public class OsiPostfachRemoteServiceRemoteITCase { ...@@ -83,8 +83,10 @@ public class OsiPostfachRemoteServiceRemoteITCase {
@Test @Test
void shouldReceiveAllMessage(){ void shouldReceiveAllMessage(){
Stream<PostfachNachricht> allMessages = osiPostfachRemoteService.getAllMessages(); Stream<PostfachNachricht> allMessages = osiPostfachRemoteService.getAllMessages();
var messages = allMessages.toList(); var messages = allMessages.toList();
assertThat(messages.size() > 0);
assertThat(messages).isNotEmpty();
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment