Closed steynw closed 4 years ago
Hi @steynw
first of all lets clarify your use case.
I assume you have a
In case I`m right, you only need these maven dependencies:
<dependency>
<groupId>com.sap.cloud.security</groupId>
<artifactId>java-api</artifactId>
<version>${sap.cloud.security.version}</version>
<scope>provided</scope>
</dependency>
Examples/documentation: https://github.com/SAP/cloud-security-xsuaa-integration/blob/master/README.md#token-validation-for-java-web-applications-using-sap-java-buildpack
<dependency>
<groupId>com.sap.cloud.security</groupId>
<artifactId>java-security</artifactId>
<version>${sap.cloud.security.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${apache.httpclient.version}</version>
</dependency>
Examples/documentation: https://github.com/SAP/cloud-security-xsuaa-integration#token-exchange-for-java-applications
and as you've already done, make sure that slf4j-api is already provided with SAP Java buildpack (i think you have already considered that).
Best regards, Nena
Hi,
to clarify: If you are using the SAP Java Buildpack and include java-security
directly in your application, you will have to exclude slf4j-api because both java-security
and the buildpack provide it and that can cause issues.
So in case of SAP Java Buildpack you should define your java-security dependency like this:
<dependency>
<groupId>com.sap.cloud.security</groupId>
<artifactId>java-security</artifactId>
<version>${sap.cloud.security.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
This is what Nena meant with 'slf4j-api is already provided with SAP Java buildpack'.
Best Regards Daniel
Got it, thanks a lot.
Executing the Sample Code:
Unable to obtain the Access-Token - the code compiles but throws a runtime ClassNotFoundException.
OAuth2ServiceConfiguration configuration = Environments.getCurrent().getXsuaaConfiguration(); String clientSecret = configuration.getClientSecret(); String clientid = configuration.getClientId(); String url = configuration.getUrl().toString();
response.getOutputStream().println("clientSecret: "+clientSecret); response.getOutputStream().println("clientid: "+clientid); response.getOutputStream().println("url: "+url);
XsuaaTokenFlows tokenFlows = new XsuaaTokenFlows( new DefaultOAuth2TokenService(),new XsuaaDefaultEndpoints(url), new ClientCredentials(clientid, clientSecret)); OAuth2TokenResponse tokenResponse = tokenFlows.clientCredentialsTokenFlow().execute(); response.getOutputStream().println("Access-Token: "+tokenResponse.getAccessToken());
clientSecret: O0ZZZZZZZ clientid: sb-s4hctmjvprdrouter-EnterpriseMessaging-ZZZZZZ url: https://enterprisemessaging-em.authentication.sap.hana.ondemand.com
25 Aug 2020, 09:48:59 (GMT-04:00) - [APP/PROC/WEB/0] { "written_at":"2020-08-25T13:48:59.700Z","written_ts":496834699484602,"tenant_id":"-","component_id":"af83ae30-c98a-4328-b288-b3314158afe6","component_name":"s4hctmjv-jv","DCComponent":"","organization_name":"S4HC_DBS_CF_EnterpriseMessaging-EM","component_type":"application","space_name":"HDB-PRD","component_instance":"0","organization_id":"b82af7e0-d5d6-4fdb-b44d-ef529d48c3c3","correlation_id":"-","CSNComponent":"","space_id":"c030b066-bdb6-4d5e-b0f1-caf51c615ecf","Application":"s4hctmjv-jv","container_id":"10.0.74.180","type":"log","logger":"org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/].[com.sap.tm.servlet.UserContext]","thread":"http-nio-0.0.0.0-8080-exec-6","level":"ERROR","categories":[],"msg":"Servlet.service() for servlet [com.sap.tm.servlet.UserContext] in context with path [] threw exception [Servlet execution threw an exception] with root cause","stacktrace":["java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest","\tat org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1358)","\tat org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180)","\tat com.sap.tm.servlet.UserContext.doGet(UserContext.java:75)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:626)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:733)","\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)","\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)","\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)","\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)","\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)","\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)","\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)","\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:668)","\tat com.sap.xs.security.container.XSSecurityAuthenticator.invoke(XSSecurityAuthenticator.java:78)","\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)","\tat com.sap.xs.java.valves.ErrorReportValve.invoke(ErrorReportValve.java:66)","\tat ch.qos.logback.access.tomcat.LogbackValve.invoke(LogbackValve.java:256)","\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)","\tat com.sap.xs.jdbc.datasource.valve.JDBCValve.invoke(JDBCValve.java:62)","\tat com.sap.xs.security.TenantIdValve.invoke(TenantIdValve.java:34)","\tat com.sap.xs.security.UserInfoValve.invoke(UserInfoValve.java:18)","\tat com.sap.xs.statistics.tomcat.valve.RequestTracingValve.invoke(RequestTracingValve.java:43)","\tat com.sap.xs.logging.catalina.RuntimeInfoValve.invoke(RuntimeInfoValve.java:42)","\tat org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747)","\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)","\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:615)","\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)","\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)","\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1626)","\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)","\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)","\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)","\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)","\tat java.lang.Thread.run(Thread.java:836)"] }
Pom dependenies
pom.txt