diff --git a/token-client/src/main/java/com/sap/cloud/security/xsuaa/client/DefaultOAuth2TokenService.java b/token-client/src/main/java/com/sap/cloud/security/xsuaa/client/DefaultOAuth2TokenService.java index 5599c84dd0..85ad58a950 100644 --- a/token-client/src/main/java/com/sap/cloud/security/xsuaa/client/DefaultOAuth2TokenService.java +++ b/token-client/src/main/java/com/sap/cloud/security/xsuaa/client/DefaultOAuth2TokenService.java @@ -74,8 +74,11 @@ public DefaultOAuth2TokenService(@Nonnull CloseableHttpClient httpClient, @Override protected OAuth2TokenResponse requestAccessToken(URI tokenEndpointUri, HttpHeaders headers, Map parameters) throws OAuth2ServiceException { - headers.withHeader(MDCHelper.CORRELATION_HEADER, MDCHelper.getOrCreateCorrelationId()); - HttpPost httpPost = createHttpPost(tokenEndpointUri, headers, parameters); + HttpHeaders requestHeaders = new HttpHeaders(); + headers.getHeaders().forEach(h -> requestHeaders.withHeader(h.getName(), h.getValue())); + requestHeaders.withHeader(MDCHelper.CORRELATION_HEADER, MDCHelper.getOrCreateCorrelationId()); + + HttpPost httpPost = createHttpPost(tokenEndpointUri, requestHeaders, parameters); LOGGER.debug("access token request {} - {}", headers, parameters); return executeRequest(httpPost); } diff --git a/token-client/src/test/java/com/sap/cloud/security/xsuaa/client/DefaultOAuth2TokenServiceTest.java b/token-client/src/test/java/com/sap/cloud/security/xsuaa/client/DefaultOAuth2TokenServiceTest.java index 62e28bc606..a45790dde8 100644 --- a/token-client/src/test/java/com/sap/cloud/security/xsuaa/client/DefaultOAuth2TokenServiceTest.java +++ b/token-client/src/test/java/com/sap/cloud/security/xsuaa/client/DefaultOAuth2TokenServiceTest.java @@ -9,6 +9,7 @@ import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.read.ListAppender; +import com.sap.cloud.security.config.ClientCredentials; import com.sap.cloud.security.servlet.MDCHelper; import com.sap.cloud.security.xsuaa.http.HttpHeaders; import com.sap.cloud.security.xsuaa.http.HttpHeadersFactory; @@ -136,6 +137,20 @@ public void httpResponseWithErrorStatusCode_throwsExceptionContainingMessage() t .extracting("httpStatusCode").isEqualTo(HttpStatus.SC_UNAUTHORIZED); } + @Test + public void retrieveToken_testCache() throws IOException { + CloseableHttpResponse response = HttpClientTestFactory.createHttpResponse(VALID_JSON_RESPONSE); + when(mockHttpClient.execute(any(HttpPost.class))) + .thenReturn(response); + + cut.retrieveAccessTokenViaClientCredentialsGrant(TOKEN_ENDPOINT_URI, + new ClientCredentials("myClientId", "mySecret"), null, null, emptyMap(), false); + cut.retrieveAccessTokenViaClientCredentialsGrant(TOKEN_ENDPOINT_URI, + new ClientCredentials("myClientId", "mySecret"), null, null, emptyMap(), false); + + verify(mockHttpClient, times(1)).execute(any(HttpPost.class)); + } + private OAuth2TokenResponse requestAccessToken(Map optionalParameters) throws OAuth2ServiceException { HttpHeaders withoutAuthorizationHeader = HttpHeadersFactory.createWithoutAuthorizationHeader();