diff --git a/examples/spring-boot-oauth-u2m-demo/pom.xml b/examples/spring-boot-oauth-u2m-demo/pom.xml index 79413706b..cf8d1d347 100644 --- a/examples/spring-boot-oauth-u2m-demo/pom.xml +++ b/examples/spring-boot-oauth-u2m-demo/pom.xml @@ -4,7 +4,7 @@ org.springframework.boot spring-boot-starter-parent - 2.6.4 + 3.5.12 @@ -17,8 +17,11 @@ UTF-8 - 1.8 - 1.8 + 17 + 17 + + 2.21.2 @@ -39,9 +42,5 @@ databricks-sdk-java 0.103.0 - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - diff --git a/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/App.java b/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/App.java index beb33d487..875de6e77 100644 --- a/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/App.java +++ b/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/App.java @@ -2,8 +2,6 @@ import com.databricks.sdk.core.commons.CommonsHttpClient; import com.databricks.sdk.core.http.HttpClient; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; @@ -23,13 +21,6 @@ public HttpClient getHttpClient() { return new CommonsHttpClient.Builder().withTimeoutSeconds(30).build(); } - @Bean - public ObjectMapper getObjectMapper() { - ObjectMapper m = new ObjectMapper(); - m.registerModule(new JavaTimeModule()); - return m; - } - @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeHttpRequests((requests) -> requests diff --git a/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/RootController.java b/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/RootController.java index 4dc2fe994..bb83f8466 100644 --- a/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/RootController.java +++ b/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/RootController.java @@ -4,12 +4,12 @@ import com.databricks.sdk.core.http.HttpClient; import com.databricks.sdk.core.oauth.Consent; import com.databricks.sdk.core.oauth.OAuthClient; +import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; import com.databricks.sdk.core.oauth.SessionCredentials; import com.databricks.sdk.service.compute.ClusterDetails; import com.databricks.sdk.service.compute.ListClustersRequest; +import com.databricks.sdk.service.oauth2.CreateCustomAppIntegration; import com.databricks.sdk.service.oauth2.CreateCustomAppIntegrationOutput; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; @@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; -import javax.servlet.http.HttpSession; +import jakarta.servlet.http.HttpSession; import java.io.IOException; import java.net.MalformedURLException; import java.util.ArrayList; @@ -31,9 +31,6 @@ public class RootController { @Autowired private HttpClient hc; - @Autowired - private ObjectMapper mapper; - // Initialized by initializeApp(). This should be initialized in a more Spring-friendly way. private OAuthClient client; // Initialized by callback(). This should be initialized in a more Spring-friendly way. @@ -47,16 +44,13 @@ private String getRedirectUrl() { } @GetMapping("/") - public String index(HttpSession session, Model model) throws JsonProcessingException { + public String index(HttpSession session, Model model) { if (client != null) { model.addAttribute("clientId", client.getClientId()); model.addAttribute("clientSecret", client.getClientSecret()); model.addAttribute("hostname", client.getHost()); } - SessionCredentials sessionCreds = (SessionCredentials) session.getAttribute("sessionCreds"); - if (sessionCreds != null) { - model.addAttribute("sessionCreds", mapper.writeValueAsString(sessionCreds.getToken())); - } + model.addAttribute("authenticated", session.getAttribute("sessionCreds") != null); return "index"; } @@ -70,12 +64,16 @@ public String initializeApp( @RequestParam(name="client_id") String clientId, @RequestParam(name="client_secret") String clientSecret, @RequestParam(name="hostname") String hostname) throws IOException { + DatabricksConfig config = new DatabricksConfig().setHost(hostname).setHttpClient(hc).resolve(); + OpenIDConnectEndpoints oidcEndpoints = config.getDatabricksOidcEndpoints(); client = new OAuthClient.Builder() .withClientId(clientId) .withClientSecret(clientSecret) .withHost(hostname) .withRedirectUrl(getRedirectUrl()) .withHttpClient(hc) + .withOpenIDConnectEndpoints(oidcEndpoints) + .withScopes(List.of("all-apis", "offline_access")) .build(); return "redirect:/"; } @@ -104,13 +102,15 @@ public String makeNewApp( .setHttpClient(hc); AccountClient account = new AccountClient(c); CreateCustomAppIntegrationOutput result = account.customAppIntegration().create( - "java-sdk-demo", Collections.singletonList(getRedirectUrl())); + new CreateCustomAppIntegration() + .setName("java-sdk-demo") + .setRedirectUrls(Collections.singletonList(getRedirectUrl()))); return initializeApp(result.getClientId(), result.getClientSecret(), hostname); } @GetMapping("/authenticate") - public String authenticate(HttpSession session, Model model) throws MalformedURLException, JsonProcessingException { + public String authenticate(HttpSession session, Model model) throws MalformedURLException { if (client == null) { model.addAttribute("authError", "Client is not yet initialized. Please login first."); return index(session, model); diff --git a/examples/spring-boot-oauth-u2m-demo/src/main/resources/templates/index.html b/examples/spring-boot-oauth-u2m-demo/src/main/resources/templates/index.html index 53db7e302..82c04705e 100644 --- a/examples/spring-boot-oauth-u2m-demo/src/main/resources/templates/index.html +++ b/examples/spring-boot-oauth-u2m-demo/src/main/resources/templates/index.html @@ -15,7 +15,7 @@

Consent

-

session credentials: Not authenticated

+

status: AuthenticatedNot authenticated

APIs

List clusters