SAP / cloud-sdk-java

Use the SAP Cloud SDK for Java to reduce development effort when building applications on SAP Business Technology Platform that communicate with SAP solutions and services such as SAP S/4HANA Cloud, SAP SuccessFactors, and many others.
Apache License 2.0
22 stars 14 forks source link

On-Premise Connectivity From Local IDE no longer working with version 5 #585

Closed SlyCatSpy closed 2 months ago

SlyCatSpy commented 2 months ago

Issue Description

We've been using for the last couple of years the "On-Premise Connectivity From Local IDE" approach described on this page: https://sap.github.io/cloud-sdk/docs/java/features/connectivity/running-locally

This approach allows us to test locally and make calls to the S4 system.

Migrating to version 5 of the cloud SDK breaks this functionnality. The only thing I changed in the pom file is the version of the sdk from 4.32.0 to 5.11.0 and I then get the following error whenever a call to the S4 destination is made: java.net.ConnectException: Connection refused: localhost/[0:0:0:0:0:0:0:1]:20003

Here's a simple example that produces the stack trace found bellow (we use this to get the latest version of the metadata to generate the csd files, it's only a dev tool):

@Profile("sandbox") 
@RestController
public class DevService {

    @GetMapping("/remote-metadata")
    public String getMetadata(@RequestParam(value = "name") String name) throws ParseException, IOException {

        HttpDestination destination = DestinationAccessor.getDestination(AppConfig.RM_DESTINATION_NAME).asHttp();
        HttpClient httpClient = HttpClientAccessor.getHttpClient(destination);

          HttpGet request = new HttpGet(name + "/$metadata");

          HttpResponse response = httpClient.execute(request);

            // Get HttpResponse Status
            System.out.println(response.getProtocolVersion());              // HTTP/1.1
            System.out.println(response.getStatusLine().getStatusCode());   // 200
            System.out.println(response.getStatusLine().getReasonPhrase()); // OK
            System.out.println(response.getStatusLine().toString());        // HTTP/1.1 200 OK

            HttpEntity entity = response.getEntity();
            if (entity != null) {
                // return it as a String
                String result = EntityUtils.toString(entity);
                System.out.println(result);
                return result;
            }

        return name;
    }
}

Steps attempted to resolve the issue

I read half the documentation found on internet, but here's something that might be interesting. I get a very similar result if I use the "Minimal Example" described on this page: https://sap.github.io/cloud-sdk/docs/js/troubleshooting

I don't recall were I saw this and I can't find it again, but I read somewhere that some default configuration values have changed to follow the secure by default approach. I suspect that it's at the root of my issue.

Impact / Priority

This issue prevents me from addressing security vulnerabilities since I'm forced to remain on version 4.32.0.

Affected development phase: Development has been completed for a while and customer pushed back the go live to august 2025. We are supporting the application in dev and qa in the meantime.

Impact: I'd say that we're Blocked, we've been consuming dev services for more than a year now and our mock services would require too much effort to make the local environment functional without us resolving this issue. There's the BAS (business application studio) approach that I have yet to test (as a work around until the issue is resolved).

Timeline: Go-Live is August 2025, but the issue is for the local development environment.

Error Message

2024-09-10T13:13:09.098-04:00  INFO 58739 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2024-09-10T13:13:09.098-04:00  INFO 58739 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2024-09-10T13:13:09.099-04:00  INFO 58739 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
2024-09-10T13:13:09.254-04:00  INFO 58739 --- [nio-8080-exec-1] c.s.c.s.c.r.ResilienceDecorator          : Ignoring legacy implementation 'com.sap.cloud.sdk.frameworks.resilience4j.Resilience4jDecorationStrategy' from Cloud SDK version 4.X in favor of: Resilience4jDecorationStrategy(decorators=[com.sap.cloud.sdk.cloudplatform.resilience4j.DefaultBulkheadProvider@12910ed4, com.sap.cloud.sdk.cloudplatform.resilience4j.DefaultTimeLimiterProvider@4b5ed766, com.sap.cloud.sdk.cloudplatform.resilience4j.DefaultRateLimiterProvider@3762d0f6, com.sap.cloud.sdk.cloudplatform.resilience4j.DefaultCircuitBreakerProvider@3d848860, com.sap.cloud.sdk.cloudplatform.resilience4j.DefaultCachingDecorator@27f9c6aa, com.sap.cloud.sdk.cloudplatform.resilience4j.DefaultRetryProvider@1aa1d0d4])
2024-09-10T13:13:09.358-04:00  INFO 58739 --- [dsdk-executor-1] c.s.c.security.client.HttpClientFactory  : loaded HttpClientFactory service providers: [com.sap.cloud.security.client.DefaultHttpClientFactory@24cefb83]
2024-09-10T13:13:09.581-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 >> "POST /oauth/token HTTP/1.1[\r][\n]"
2024-09-10T13:13:09.581-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 >> "X-CorrelationID: 3fe8432b-8554-41b7-9786-1632ee774e4a[\r][\n]"
2024-09-10T13:13:09.581-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 >> "Content-Type: application/x-www-form-urlencoded[\r][\n]"
2024-09-10T13:13:09.581-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 >> "Accept: application/json[\r][\n]"
2024-09-10T13:13:09.581-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 >> "User-Agent: token-client/3.3.1[\r][\n]"
2024-09-10T13:13:09.581-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 >> "Content-Length: 216[\r][\n]"
2024-09-10T13:13:09.581-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 >> "Host: ccq-dev.authentication.ca10.hana.ondemand.com[\r][\n]"
2024-09-10T13:13:09.581-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]"
2024-09-10T13:13:09.581-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 >> "Accept-Encoding: gzip,deflate[\r][\n]"
2024-09-10T13:13:09.581-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 >> "[\r][\n]"
2024-09-10T13:13:09.581-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 >> "grant_type=client_credentials&client_secret=xxxxx&client_id=xxxxx"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "cache-control: no-store[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "content-type: application/json;charset=UTF-8[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "date: Tue, 10 Sep 2024 17:13:09 GMT[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "pragma: no-cache[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "server: nginx[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "x-content-type-options: nosniff[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "x-frame-options: DENY[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "x-vcap-request-id: 987973ae-7ddd-4992-478a-51303a300f74[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "x-xss-protection: 1; mode=block[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "transfer-encoding: chunked[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "strict-transport-security: max-age=31536000; includeSubDomains; preload;[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "75F[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "{"access_token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vY2NxLWRldi5hdXRoZW50aWNhdGlvbi5jYTEwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktOTAyNjI2MTIwIiwidHlwIjoiSldUIiwiamlkIjogIkpRYmczdWhLd0JoeEluMnMycktRV21pZVF2SjAvTXdYTGJhV0owWUppQW89In0.eyJqdGkiOiIxMmRiNTY2NDNlNDc0MzBiOTczOTU3OTlmOTc2ODQ0NSIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiJmNDM4ZjVhNi02NTZjLTQ2ODEtYTYzNi02Zjg4OTc0ODNmMmEiLCJ6ZG4iOiJjY3EtZGV2Iiwic2VydmljZWluc3RhbmNlaWQiOiIwY2EzNWI2OC0wNTk1LTQyZjYtYTgxNC03MTgzOWZjOTljNzEifSwic3ViIjoic2ItY2xvbmUwY2EzNWI2ODA1OTU0MmY2YTgxNDcxODM5ZmM5OWM3MSFiNTQ3fGRlc3RpbmF0aW9uLXhzYXBwbmFtZSFiNSIsImF1dGhvcml0aWVzIjpbInVhYS5yZXNvdXJjZSJdLCJzY29wZSI6WyJ1YWEucmVzb3VyY2UiXSwiY2xpZW50X2lkIjoic2ItY2xvbmUwY2EzNWI2ODA1OTU0MmY2YTgxNDcxODM5ZmM5OWM3MSFiNTQ3fGRlc3RpbmF0aW9uLXhzYXBwbmFtZSFiNSIsImNpZCI6InNiLWNsb25lMGNhMzViNjgwNTk1NDJmNmE4MTQ3MTgzOWZjOTljNzEhYjU0N3xkZXN0aW5hdGlvbi14c2FwcG5hbWUhYjUiLCJhenAiOiJzYi1jbG9uZTBjYTM1YjY4MDU5NTQyZjZhODE0NzE4MzlmYzk5YzcxIWI1NDd8ZGVzdGluYXRpb24teHNhcHBuYW1lIWI1IiwiZ3JhbnRfdHlwZSI6ImNsaWVudF9jcmVkZW50aWFscyIsInJldl9zaWciOiIzZTg2ZGNmNyIsImlhdCI6MTcyNTk4ODM4OSwiZXhwIjoxNzI2MDMxNTg5LCJpc3MiOiJodHRwczovL2NjcS1kZXYuYXV0aGVudGljYXRpb24uY2ExMC5oYW5hLm9uZGVtYW5kLmNvbS9vYXV0aC90b2tlbiIsInppZCI6ImY0MzhmNWE2LTY1NmMtNDY4MS1hNjM2LTZmODg5NzQ4M2YyYSIsImF1ZCI6WyJ1YWEiLCJzYi1jbG9uZTBjYTM1YjY4MDU5NTQyZjZhODE0NzE4MzlmYzk5YzcxIWI1NDd8ZGVzdGluYXRpb24teHNhcHBuYW1lIWI1Il19.Yt8y_KuXN_aCMAIujuBs28zUIAzm6KnDVxSMT9ZysAObfjL-X5b9p-7nvugDWHEmKdUnOjTdlYwDRVE0QH3ayFkjXJJNgTWrY45RMgivM8hQ1Scujg5JMRBYlb6WduFjVbGalHcHJATFaSD1sZNq5kL0OA9JgPuW-cKxIyWZZQS1sL383T2Eo9SvK06Ucc71FBYOqZ6GdgYayqzLbq_6HNZ6lFAEoyO009teoFqtQRCSXbbgk_rpDFUhizXR57kQJYSMmUiyJ3DMb2dgpUXS1EHZl9Bc4oDkqtCeosOyYWGnDLIGLpx2u7xseUa_H3AZjLmKkDBYyvBSnBN1Qcaf9Q","token_type":"bearer","expires_in":43199,"scope":"uaa.resource","jti":"12db56643e47430b97395799f9768445"}[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "0[\r][\n]"
2024-09-10T13:13:09.645-04:00 DEBUG 58739 --- [dsdk-executor-1] org.apache.http.wire                     : http-outgoing-0 << "[\r][\n]"
2024-09-10T13:13:09.718-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 >> "GET /destination-configuration/v1/destinations/rm-s4-dest HTTP/1.1[\r][\n]"
2024-09-10T13:13:09.718-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 >> "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vY2NxLWRldi5hdXRoZW50aWNhdGlvbi5jYTEwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktOTAyNjI2MTIwIiwidHlwIjoiSldUIiwiamlkIjogIkpRYmczdWhLd0JoeEluMnMycktRV21pZVF2SjAvTXdYTGJhV0owWUppQW89In0.eyJqdGkiOiIxMmRiNTY2NDNlNDc0MzBiOTczOTU3OTlmOTc2ODQ0NSIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiJmNDM4ZjVhNi02NTZjLTQ2ODEtYTYzNi02Zjg4OTc0ODNmMmEiLCJ6ZG4iOiJjY3EtZGV2Iiwic2VydmljZWluc3RhbmNlaWQiOiIwY2EzNWI2OC0wNTk1LTQyZjYtYTgxNC03MTgzOWZjOTljNzEifSwic3ViIjoic2ItY2xvbmUwY2EzNWI2ODA1OTU0MmY2YTgxNDcxODM5ZmM5OWM3MSFiNTQ3fGRlc3RpbmF0aW9uLXhzYXBwbmFtZSFiNSIsImF1dGhvcml0aWVzIjpbInVhYS5yZXNvdXJjZSJdLCJzY29wZSI6WyJ1YWEucmVzb3VyY2UiXSwiY2xpZW50X2lkIjoic2ItY2xvbmUwY2EzNWI2ODA1OTU0MmY2YTgxNDcxODM5ZmM5OWM3MSFiNTQ3fGRlc3RpbmF0aW9uLXhzYXBwbmFtZSFiNSIsImNpZCI6InNiLWNsb25lMGNhMzViNjgwNTk1NDJmNmE4MTQ3MTgzOWZjOTljNzEhYjU0N3xkZXN0aW5hdGlvbi14c2FwcG5hbWUhYjUiLCJhenAiOiJzYi1jbG9uZTBjYTM1YjY4MDU5NTQyZjZhODE0NzE4MzlmYzk5YzcxIWI1NDd8ZGVzdGluYXRpb24teHNhcHBuYW1lIWI1IiwiZ3JhbnRfdHlwZSI6ImNsaWVudF9jcmVkZW50aWFscyIsInJldl9zaWciOiIzZTg2ZGNmNyIsImlhdCI6MTcyNTk4ODM4OSwiZXhwIjoxNzI2MDMxNTg5LCJpc3MiOiJodHRwczovL2NjcS1kZXYuYXV0aGVudGljYXRpb24uY2ExMC5oYW5hLm9uZGVtYW5kLmNvbS9vYXV0aC90b2tlbiIsInppZCI6ImY0MzhmNWE2LTY1NmMtNDY4MS1hNjM2LTZmODg5NzQ4M2YyYSIsImF1ZCI6WyJ1YWEiLCJzYi1jbG9uZTBjYTM1YjY4MDU5NTQyZjZhODE0NzE4MzlmYzk5YzcxIWI1NDd8ZGVzdGluYXRpb24teHNhcHBuYW1lIWI1Il19.Yt8y_KuXN_aCMAIujuBs28zUIAzm6KnDVxSMT9ZysAObfjL-X5b9p-7nvugDWHEmKdUnOjTdlYwDRVE0QH3ayFkjXJJNgTWrY45RMgivM8hQ1Scujg5JMRBYlb6WduFjVbGalHcHJATFaSD1sZNq5kL0OA9JgPuW-cKxIyWZZQS1sL383T2Eo9SvK06Ucc71FBYOqZ6GdgYayqzLbq_6HNZ6lFAEoyO009teoFqtQRCSXbbgk_rpDFUhizXR57kQJYSMmUiyJ3DMb2dgpUXS1EHZl9Bc4oDkqtCeosOyYWGnDLIGLpx2u7xseUa_H3AZjLmKkDBYyvBSnBN1Qcaf9Q[\r][\n]"
2024-09-10T13:13:09.718-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 >> "Accept-Language: fr[\r][\n]"
2024-09-10T13:13:09.718-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 >> "X-CorrelationID: 3fe8432b-8554-41b7-9786-1632ee774e4a[\r][\n]"
2024-09-10T13:13:09.718-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 >> "Host: destination-configuration.cfapps.ca10.hana.ondemand.com[\r][\n]"
2024-09-10T13:13:09.718-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 >> "Connection: Keep-Alive[\r][\n]"
2024-09-10T13:13:09.718-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 >> "User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.12)[\r][\n]"
2024-09-10T13:13:09.718-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 >> "Accept-Encoding: gzip,deflate[\r][\n]"
2024-09-10T13:13:09.718-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 >> "[\r][\n]"
2024-09-10T13:13:09.759-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 << "HTTP/1.1 200 OK[\r][\n]"
2024-09-10T13:13:09.759-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 << "content-length: 644[\r][\n]"
2024-09-10T13:13:09.759-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 << "content-type: application/json[\r][\n]"
2024-09-10T13:13:09.760-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 << "etag: a92c447559104d09f68442a22f50de7b2352b40c9e97a2a9e10b31c65488723d[\r][\n]"
2024-09-10T13:13:09.760-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 << "x-request-id: bf0b900b-1e20-40ea-50a6-33cf367e26d4[\r][\n]"
2024-09-10T13:13:09.760-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 << "x-response-origin-sap-cp-cf-destination-service: https://destination-configuration.cfapps.ca10.hana.ondemand.com[\r][\n]"
2024-09-10T13:13:09.760-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 << "x-unifiedconnectivity-requestinfo: {"subaccount_id":"f438f5a6-656c-4681-a636-6f8897483f2a","instance_id":"0ca35b68-0595-42f6-a814-71839fc99c71","client_id":"sb-clone0ca35b68059542f6a81471839fc99c71!b547|destination-xsappname!b5","user_id":"user_id"}[\r][\n]"
2024-09-10T13:13:09.760-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 << "x-vcap-request-id: bf0b900b-1e20-40ea-50a6-33cf367e26d4[\r][\n]"
2024-09-10T13:13:09.760-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 << "date: Tue, 10 Sep 2024 17:13:09 GMT[\r][\n]"
2024-09-10T13:13:09.760-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 << "strict-transport-security: max-age=31536000; includeSubDomains; preload;[\r][\n]"
2024-09-10T13:13:09.760-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 << "[\r][\n]"
2024-09-10T13:13:09.760-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-1 << "{"owner":{"SubaccountId":"f438f5a6-656c-4681-a636-6f8897483f2a","InstanceId":null},"destinationConfiguration":{"Name":"rm-s4-dest","Type":"HTTP","URL":"http://s4sd2.ccq.org:443","Authentication":"BasicAuthentication","ProxyType":"OnPremise","User":"RM_CONN","Description":"Ligne Rapport mensuel vers S4 SD2 client 200","sap-language":"fr","CloudConnectorLocationId":"CCQ_Azure","WebIDEEnabled":"true","sap-client":"200","Password":"%#T5qNmWAW","WebIDEUsage":"odata_abap,ui5_execute_abap,dev_abap"},"authTokens":[{"type":"Basic","value":"Uk1fQ09OTjolI1Q1cU5tV0FX","http_header":{"key":"Authorization","value":"Basic Uk1fQ09OTjolI1Q1cU5tV0FX"}}]}"
2024-09-10T13:13:09.832-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 >> "POST /oauth/token HTTP/1.1[\r][\n]"
2024-09-10T13:13:09.832-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 >> "X-CorrelationID: 3fe8432b-8554-41b7-9786-1632ee774e4a[\r][\n]"
2024-09-10T13:13:09.832-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 >> "Content-Type: application/x-www-form-urlencoded[\r][\n]"
2024-09-10T13:13:09.832-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 >> "Accept: application/json[\r][\n]"
2024-09-10T13:13:09.832-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 >> "User-Agent: token-client/3.3.1[\r][\n]"
2024-09-10T13:13:09.832-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 >> "Content-Length: 207[\r][\n]"
2024-09-10T13:13:09.832-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 >> "Host: ccq-dev.authentication.ca10.hana.ondemand.com[\r][\n]"
2024-09-10T13:13:09.832-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 >> "Connection: Keep-Alive[\r][\n]"
2024-09-10T13:13:09.832-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 >> "Accept-Encoding: gzip,deflate[\r][\n]"
2024-09-10T13:13:09.832-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 >> "[\r][\n]"
2024-09-10T13:13:09.832-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 >> "grant_type=client_credentials&client_secret=xxxxx&client_id=xxxxx"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "HTTP/1.1 200 OK[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "cache-control: no-store[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "content-type: application/json;charset=UTF-8[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "date: Tue, 10 Sep 2024 17:13:09 GMT[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "pragma: no-cache[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "server: nginx[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "x-content-type-options: nosniff[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "x-frame-options: DENY[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "x-vcap-request-id: 8f9ecd53-e82e-4422-76f5-a3ae31d16bf9[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "x-xss-protection: 1; mode=block[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "transfer-encoding: chunked[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "strict-transport-security: max-age=31536000; includeSubDomains; preload;[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "790[\r][\n]"
2024-09-10T13:13:09.979-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "{"access_token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vY2NxLWRldi5hdXRoZW50aWNhdGlvbi5jYTEwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktOTAyNjI2MTIwIiwidHlwIjoiSldUIiwiamlkIjogIjY2L0lGdnRDMjU5S1hZdEJxdVpyWktGdWhsRVlnVUpwSDQxY3hQS2FFMUk9In0.eyJqdGkiOiI3ZjNlNmFhZDZhNTE0MTNiYTI1NDdlOGE1M2IxMTE0YiIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiJmNDM4ZjVhNi02NTZjLTQ2ODEtYTYzNi02Zjg4OTc0ODNmMmEiLCJ6ZG4iOiJjY3EtZGV2Iiwic2VydmljZWluc3RhbmNlaWQiOiI0MWY4Y2VlOS1lODQ5LTQ4NTAtYTgzMy1hOTZiY2EzNTdlNzcifSwic3ViIjoic2ItY2xvbmU0MWY4Y2VlOWU4NDk0ODUwYTgzM2E5NmJjYTM1N2U3NyFiNTQ3fGNvbm5lY3Rpdml0eSFiMiIsImF1dGhvcml0aWVzIjpbInVhYS5yZXNvdXJjZSIsImNvbm5lY3Rpdml0eSFiMi5wcm94eSJdLCJzY29wZSI6WyJ1YWEucmVzb3VyY2UiLCJjb25uZWN0aXZpdHkhYjIucHJveHkiXSwiY2xpZW50X2lkIjoic2ItY2xvbmU0MWY4Y2VlOWU4NDk0ODUwYTgzM2E5NmJjYTM1N2U3NyFiNTQ3fGNvbm5lY3Rpdml0eSFiMiIsImNpZCI6InNiLWNsb25lNDFmOGNlZTllODQ5NDg1MGE4MzNhOTZiY2EzNTdlNzchYjU0N3xjb25uZWN0aXZpdHkhYjIiLCJhenAiOiJzYi1jbG9uZTQxZjhjZWU5ZTg0OTQ4NTBhODMzYTk2YmNhMzU3ZTc3IWI1NDd8Y29ubmVjdGl2aXR5IWIyIiwiZ3JhbnRfdHlwZSI6ImNsaWVudF9jcmVkZW50aWFscyIsInJldl9zaWciOiJmM2Y1NDU0IiwiaWF0IjoxNzI1OTg4Mzg5LCJleHAiOjE3MjYwMzE1ODksImlzcyI6Imh0dHBzOi8vY2NxLWRldi5hdXRoZW50aWNhdGlvbi5jYTEwLmhhbmEub25kZW1hbmQuY29tL29hdXRoL3Rva2VuIiwiemlkIjoiZjQzOGY1YTYtNjU2Yy00NjgxLWE2MzYtNmY4ODk3NDgzZjJhIiwiYXVkIjpbImNvbm5lY3Rpdml0eSFiMiIsInVhYSIsInNiLWNsb25lNDFmOGNlZTllODQ5NDg1MGE4MzNhOTZiY2EzNTdlNzchYjU0N3xjb25uZWN0aXZpdHkhYjIiXX0.Uw-rU1fQcjo0bQzJfHz7E9Cx7J6F-8DU2ldLS7urmMU98whERNKHI8-UDTgSAgLSbzydlHRof0f4aFDW53_ckCMO-s_lzOzoeiME5fRD_5yWQ27xDTRYtGbFK-vy1XjYa_ZI2I9A3WcclcR5tI5KPt2aN0z1GLEhoKgIXpUhvktggJvRgczY5YaMOKFKqos1N0rL0YCxTwuKMrp3gmsPIxqTIf8wWMhcB8_SWyW_5-sOhTczscKiH2bZ6PHcagbIwW16ncNh50cODArOPOI98A4F7z-2kdJJ_Iwl2ShLwQ-RYcQJp7ELyszhXVoTW9Yph4MiFyLFEqJSsOs-HTyiuA","token_type":"bearer","expires_in":43199,"scope":"uaa.resource connectivity!b2.proxy","jti":"7f3e6aad6a51413ba2547e8a53b1114b"}[\r][\n]"
2024-09-10T13:13:09.980-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "0[\r][\n]"
2024-09-10T13:13:09.980-04:00 DEBUG 58739 --- [dsdk-executor-0] org.apache.http.wire                     : http-outgoing-2 << "[\r][\n]"
2024-09-10T13:13:09.985-04:00 ERROR 58739 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception

org.apache.http.conn.HttpHostConnectException: Connect to localhost:20003 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: localhost/[0:0:0:0:0:0:0:1]:20003
        at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156)
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
        at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:401)
        at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
        at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
        at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
        at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
        at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
        at com.sap.cloud.sdk.cloudplatform.connectivity.HttpClientWrapper.execute(HttpClientWrapper.java:144)
        at com.sap.cloud.sdk.cloudplatform.connectivity.HttpClientWrapper.execute(HttpClientWrapper.java:37)
        at com.sap.ibso.rm.mock.DevService.getMetadata(DevService.java:34)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:569)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
        at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
        at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
        at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:479)
        at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:340)
        at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:82)
        at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:128)
        at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
        at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
        at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
        at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
        at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
        at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
        at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
        at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
        at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
        at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
        at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
        at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
        at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)
        at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
        at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
        at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
        at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
        at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
        at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$0(ObservationFilterChainDecorator.java:323)
        at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:224)
        at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
        at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
        at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195)
        at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
        at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
        at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:352)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:268)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
        at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:113)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
        at com.sap.hcp.cf.logging.servlet.filter.CompositeFilter$InternalFilterChain.doFilter(CompositeFilter.java:86)
        at com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilterRequest(AbstractLoggingFilter.java:47)
        at com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilter(AbstractLoggingFilter.java:20)
        at com.sap.hcp.cf.logging.servlet.filter.CompositeFilter$InternalFilterChain.doFilter(CompositeFilter.java:84)
        at com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilterRequest(AbstractLoggingFilter.java:47)
        at com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilter(AbstractLoggingFilter.java:20)
        at com.sap.hcp.cf.logging.servlet.filter.CompositeFilter$InternalFilterChain.doFilter(CompositeFilter.java:84)
        at com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilterRequest(AbstractLoggingFilter.java:47)
        at com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilter(AbstractLoggingFilter.java:20)
        at com.sap.hcp.cf.logging.servlet.filter.CompositeFilter$InternalFilterChain.doFilter(CompositeFilter.java:84)
        at com.sap.hcp.cf.logging.servlet.filter.CompositeFilter.doFilter(CompositeFilter.java:59)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
        at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:731)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:904)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
        at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.net.ConnectException: Connection refused: localhost/[0:0:0:0:0:0:0:1]:20003
        at java.base/sun.nio.ch.Net.pollConnect(Native Method)
        at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672)
        at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:554)
        at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602)
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
        at java.base/java.net.Socket.connect(Socket.java:633)
        at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75)
        at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
        ... 150 common frames omitted

Project Details

Dependencies.txt


Checklist

CharlesDuboisSAP commented 2 months ago

The entry connectivity of your VCAP_SERVICES might have misconfigured values:

Let me know if this fixes it. Best regards, Charles

SlyCatSpy commented 2 months ago

Hi Charles, Thanks for your suggestion. It sadly doesn't help. Don't forget that the exact same approach works if I simply revert the cloud sdk version to 4.32.0. By the way, I think the documentation is wrong here: https://sap.github.io/cloud-sdk/docs/java/features/connectivity/running-locally

This is a screenshot from the page referred above:

image

The proxy-port value is mapped to credentials.onpremise_proxy_port, but I suspect that the second proxy-port variable in the command line should reflect the credentials.onpremise_proxy_http_port.

I open my tunnel with the following command:

cf ssh my-app-name -L 8081:my-proxy-host:20003

Here's the anonymised content of my VCAP_SERVICES configuration which I use to set my environment:

{
    "destination": [
        {
            "label": "destination",
            "plan": "lite",
            "tags": [
                "destination",
                "conn",
                "connsvc"
            ],
            "name": "destinations",
            "credentials": {
                "tenantmode": "dedicated",
                "clientid": "xxxxx",
                "credential-type": "binding-secret",
                "xsappname": "xxxxx",
                "clientsecret": "xxxxx",
                "uri": "xxxxx",
                "url": "xxxxx",
                "uaadomain": "xxxxx",
                "instanceid": "xxxxx",
                "verificationkey": "xxxxx",
                "identityzone": "ccq-dev",
                "tenantid": "xxxxx"
            }
        }
    ],
    "connectivity": [
        {
            "label": "connectivity",
            "plan": "lite",
            "tags": [
                "connectivity",
                "conn",
                "connsvc"
            ],
            "name": "custom-service:rm-connectivity-inst",
            "credentials": {
                "tenantmode": "dedicated",
                "clientid": "xxxxx",
                "token_service_domain": "xxxxx",
                "credential-type": "binding-secret",
                "token_service_url": "xxxxx",
                "xsappname": "xxxxx",
                "onpremise_proxy_ldap_port": "20001",
                "onpremise_socks5_proxy_port": "20004",
                "clientsecret": "xxxxx",
                "onpremise_proxy_http_port": "20003",
                "url": "xxxxx",
                "onpremise_proxy_host": "localhost",
                "uaadomain": "xxxxx",
                "onpremise_proxy_port": "8081",
                "verificationkey": "xxxxx",
                "identityzone": "xxxxx",
                "tenantid": "xxxxx",
                "onpremise_proxy_rfc_port": "20001"
            }
        }
    ]
}

Please let me know if there's anything else that could help you help me! :)

Thanks, Sylvain

CharlesDuboisSAP commented 2 months ago

Shouldn'tonpremise_proxy_host be a remote host name instead of localhost? I will also correct the documentation.

SlyCatSpy commented 2 months ago

The documentation states that the value should be replaced with localhost. It works with cloud sdk 4.32.0.

CharlesDuboisSAP commented 2 months ago

Hello Sylvain, If you are able print out the properties of the destination in v4, it will speed up my investigation:

HttpDestination destination = DestinationAccessor.getDestination(AppConfig.RM_DESTINATION_NAME).asHttp();

If it doesn't take too much time also do the same for v5

Best regards, Charles

CharlesDuboisSAP commented 2 months ago

I tried but I could not reproduce the error. I also have a different port number:

cf ssh app-name -L 20003:url:20003

Your proxy port was 8081.

Please also check with my command

SlyCatSpy commented 2 months ago

I'm stuck a bit now, I was making different tests and nothing was working anymore. Turns out that there are currently issues in the customer's environmnent I'm trying to connect to.

SlyCatSpy commented 2 months ago

Looks like I'll resume work on this issue Monday, customer has locked down S4 for an upgrade.

SlyCatSpy commented 2 months ago

Here are the destination properties for 4.32.0:

Authentication : BasicAuthentication
authTokens : [ScpCfDestinationServiceV1Response.DestinationAuthToken(type=Basic, value=XXXXX, error=null, expiresIn=null, httpHeaderSuggestion=Header(name=Authorization, value=Basic XXXXX), expiryTimestamp=null)]
CloudConnectorLocationId : XXXXX_Azure
Description : Ligne Rapport mensuel vers S4 SD2 client 200
Name : rm-s4-dest
Password : XXXXX
ProxyType : OnPremise
sap-client : 200
sap-language : fr
Type : HTTP
URL : http://on.premise.hostname:443
User : XXXXX
WebIDEEnabled : true
WebIDEUsage : odata_abap,ui5_execute_abap,dev_abap

Here are the destination properties for 5.12.0:

Authentication : BasicAuthentication
CloudConnectorLocationId : XXXXX_Azure
cloudsdk.authTokens : [DestinationServiceV1Response.DestinationAuthToken(type=Basic, value=XXXXX, error=null, expiresIn=null, httpHeaderSuggestion=Header(name=Authorization, value=Basic XXXXX), expiryTimestamp=null)]
cloudsdk.propertiesForChangeDetection : [Name, Type, URL, Authentication, ProxyType, User, Description, sap-language, CloudConnectorLocationId, WebIDEEnabled, sap-client, Password, WebIDEUsage]
cloudsdk.tenantId : 
Description : Ligne Rapport mensuel vers S4 SD2 client 200
Name : rm-s4-dest
Password : XXXXX
Proxy : http://localhost:20003
ProxyType : OnPremise
sap-client : 200
sap-language : fr
Type : HTTP
URL : http://on.premise.hostname:443
User : XXXXX
WebIDEEnabled : true
WebIDEUsage : odata_abap,ui5_execute_abap,dev_abap
SlyCatSpy commented 2 months ago

Hi Charles, It works using your proposed command line:

cf ssh app-name -L 20003:url:20003

I'm sure I had tried that when I revisited the documentation.

Anyway, thanks for your help.

Regards, Sylvain