From d5331fb38f795364d6172aca5c3024411b308a7d Mon Sep 17 00:00:00 2001 From: Hector Castejon Diaz Date: Mon, 9 Feb 2026 13:55:00 +0000 Subject: [PATCH 1/6] test --- .../databricks/sdk/core/DatabricksConfig.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java index 23fd990b9..ff2d6c2f0 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java @@ -798,15 +798,18 @@ private OpenIDConnectEndpoints fetchDefaultOidcEndpoints() throws IOException { } if (isAzure() && getAzureClientId() != null) { - Request request = new Request("GET", getHost() + "/oidc/oauth2/v2.0/authorize"); - request.setRedirectionBehavior(false); - Response resp = getHttpClient().execute(request); - String realAuthUrl = resp.getFirstHeader("location"); - if (realAuthUrl == null) { - return null; + ApiClient apiClient = + new ApiClient.Builder() + .withHttpClient(getHttpClient()) + .withGetHostFunc(v -> getHost()) + .build(); + try { + return apiClient.execute( + new Request("GET", "/oidc/.well-known/oauth-authorization-server"), + OpenIDConnectEndpoints.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); } - return new OpenIDConnectEndpoints( - realAuthUrl.replaceAll("/authorize", "/token"), realAuthUrl); } if (isAccountClient() && getAccountId() != null) { String prefix = getHost() + "/oidc/accounts/" + getAccountId(); From b5a1b7aaa720a5bee5568b6b029537b33c09f3ab Mon Sep 17 00:00:00 2001 From: Hector Castejon Diaz Date: Mon, 9 Feb 2026 14:47:48 +0000 Subject: [PATCH 2/6] add oidc endpoint test --- .../integration/OidcAccountEndpointIT.java | 31 +++++++++++++++++++ .../integration/OidcUcAccountEndpointIT.java | 31 +++++++++++++++++++ .../OidcUcWorkspaceEndpointIT.java | 25 +++++++++++++++ .../integration/OidcWorkspaceEndpointIT.java | 25 +++++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcAccountEndpointIT.java create mode 100644 databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcAccountEndpointIT.java create mode 100644 databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java create mode 100644 databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcAccountEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcAccountEndpointIT.java new file mode 100644 index 000000000..6dc165a39 --- /dev/null +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcAccountEndpointIT.java @@ -0,0 +1,31 @@ +package com.databricks.sdk.integration; + +import com.databricks.sdk.AccountClient; +import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; +import com.databricks.sdk.integration.framework.EnvContext; +import com.databricks.sdk.integration.framework.EnvTest; + +import java.io.IOException; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; + + +@EnvContext("account") +@ExtendWith(EnvTest.class) +public class OidcAccountEndpointIT { + @Test + void lists(AccountClient a) throws IOException { + OpenIDConnectEndpoints endpoints = a.config().getOidcEndpoints(); + String host = a.config().getHost(); + String accountId = a.config().getAccountId(); + if (a.config().isAzure()) { + assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/v1/authorize"); + assert endpoints.getTokenEndpoint().equals(host + "/oidc/v1/token"); + } else { + assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/authorize"); + assert endpoints.getTokenEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/token"); + } + } + + +} diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcAccountEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcAccountEndpointIT.java new file mode 100644 index 000000000..3ca1bab95 --- /dev/null +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcAccountEndpointIT.java @@ -0,0 +1,31 @@ +package com.databricks.sdk.integration; + +import com.databricks.sdk.AccountClient; +import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; +import com.databricks.sdk.integration.framework.EnvContext; +import com.databricks.sdk.integration.framework.EnvTest; + +import java.io.IOException; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; + + +@EnvContext("ucacct") +@ExtendWith(EnvTest.class) +public class OidcUcAccountEndpointIT { + @Test + void lists(AccountClient a) throws IOException { + OpenIDConnectEndpoints endpoints = a.config().getOidcEndpoints(); + String host = a.config().getHost(); + String accountId = a.config().getAccountId(); + if (a.config().isAzure()) { + assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/v1/authorize"); + assert endpoints.getTokenEndpoint().equals(host + "/oidc/v1/token"); + } else { + assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/authorize"); + assert endpoints.getTokenEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/token"); + } + } + + +} diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java new file mode 100644 index 000000000..411bd3ec2 --- /dev/null +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java @@ -0,0 +1,25 @@ +package com.databricks.sdk.integration; + +import com.databricks.sdk.WorkspaceClient; +import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; +import com.databricks.sdk.integration.framework.EnvContext; +import com.databricks.sdk.integration.framework.EnvTest; + +import java.io.IOException; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; + + +@EnvContext("ucws") +@ExtendWith(EnvTest.class) +public class OidcUcWorkspaceEndpointIT { + @Test + void lists(WorkspaceClient w) throws IOException { + OpenIDConnectEndpoints endpoints = w.config().getOidcEndpoints(); + String host = w.config().getHost(); + assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/v1/authorize"); + assert endpoints.getTokenEndpoint().equals(host + "/oidc/v1/token"); + } + + +} diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java new file mode 100644 index 000000000..617d5e8e8 --- /dev/null +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java @@ -0,0 +1,25 @@ +package com.databricks.sdk.integration; + +import com.databricks.sdk.WorkspaceClient; +import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; +import com.databricks.sdk.integration.framework.EnvContext; +import com.databricks.sdk.integration.framework.EnvTest; + +import java.io.IOException; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; + + +@EnvContext("workspace") +@ExtendWith(EnvTest.class) +public class OidcWorkspaceEndpointIT { + @Test + void lists(WorkspaceClient w) throws IOException { + OpenIDConnectEndpoints endpoints = w.config().getOidcEndpoints(); + String host = w.config().getHost(); + assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/v1/authorize"); + assert endpoints.getTokenEndpoint().equals(host + "/oidc/v1/token"); + } + + +} From 352a01d8ca80ab9e800bf41bf1a5906186339a73 Mon Sep 17 00:00:00 2001 From: Hector Castejon Diaz Date: Mon, 9 Feb 2026 15:00:27 +0000 Subject: [PATCH 3/6] fmt --- .../com/databricks/sdk/core/DatabricksConfig.java | 2 +- .../sdk/integration/OidcAccountEndpointIT.java | 12 ++++++------ .../sdk/integration/OidcUcAccountEndpointIT.java | 12 ++++++------ .../sdk/integration/OidcUcWorkspaceEndpointIT.java | 4 ---- .../sdk/integration/OidcWorkspaceEndpointIT.java | 4 ---- 5 files changed, 13 insertions(+), 21 deletions(-) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java index ff2d6c2f0..60621607d 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java @@ -798,7 +798,7 @@ private OpenIDConnectEndpoints fetchDefaultOidcEndpoints() throws IOException { } if (isAzure() && getAzureClientId() != null) { - ApiClient apiClient = + ApiClient apiClient = new ApiClient.Builder() .withHttpClient(getHttpClient()) .withGetHostFunc(v -> getHost()) diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcAccountEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcAccountEndpointIT.java index 6dc165a39..9c6f3db99 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcAccountEndpointIT.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcAccountEndpointIT.java @@ -4,12 +4,10 @@ import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; import com.databricks.sdk.integration.framework.EnvContext; import com.databricks.sdk.integration.framework.EnvTest; - import java.io.IOException; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; - @EnvContext("account") @ExtendWith(EnvTest.class) public class OidcAccountEndpointIT { @@ -22,10 +20,12 @@ void lists(AccountClient a) throws IOException { assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/v1/authorize"); assert endpoints.getTokenEndpoint().equals(host + "/oidc/v1/token"); } else { - assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/authorize"); - assert endpoints.getTokenEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/token"); + assert endpoints + .getAuthorizationEndpoint() + .equals(host + "/oidc/accounts/" + accountId + "/v1/authorize"); + assert endpoints + .getTokenEndpoint() + .equals(host + "/oidc/accounts/" + accountId + "/v1/token"); } } - - } diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcAccountEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcAccountEndpointIT.java index 3ca1bab95..369f5ca04 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcAccountEndpointIT.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcAccountEndpointIT.java @@ -4,12 +4,10 @@ import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; import com.databricks.sdk.integration.framework.EnvContext; import com.databricks.sdk.integration.framework.EnvTest; - import java.io.IOException; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; - @EnvContext("ucacct") @ExtendWith(EnvTest.class) public class OidcUcAccountEndpointIT { @@ -22,10 +20,12 @@ void lists(AccountClient a) throws IOException { assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/v1/authorize"); assert endpoints.getTokenEndpoint().equals(host + "/oidc/v1/token"); } else { - assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/authorize"); - assert endpoints.getTokenEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/token"); + assert endpoints + .getAuthorizationEndpoint() + .equals(host + "/oidc/accounts/" + accountId + "/v1/authorize"); + assert endpoints + .getTokenEndpoint() + .equals(host + "/oidc/accounts/" + accountId + "/v1/token"); } } - - } diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java index 411bd3ec2..5b02183a9 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java @@ -4,12 +4,10 @@ import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; import com.databricks.sdk.integration.framework.EnvContext; import com.databricks.sdk.integration.framework.EnvTest; - import java.io.IOException; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; - @EnvContext("ucws") @ExtendWith(EnvTest.class) public class OidcUcWorkspaceEndpointIT { @@ -20,6 +18,4 @@ void lists(WorkspaceClient w) throws IOException { assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/v1/authorize"); assert endpoints.getTokenEndpoint().equals(host + "/oidc/v1/token"); } - - } diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java index 617d5e8e8..d5e06ec7f 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java @@ -4,12 +4,10 @@ import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; import com.databricks.sdk.integration.framework.EnvContext; import com.databricks.sdk.integration.framework.EnvTest; - import java.io.IOException; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; - @EnvContext("workspace") @ExtendWith(EnvTest.class) public class OidcWorkspaceEndpointIT { @@ -20,6 +18,4 @@ void lists(WorkspaceClient w) throws IOException { assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/v1/authorize"); assert endpoints.getTokenEndpoint().equals(host + "/oidc/v1/token"); } - - } From 529f4343b73e6a662e82283fbc2d061c8487b778 Mon Sep 17 00:00:00 2001 From: Hector Castejon Diaz Date: Mon, 9 Feb 2026 15:30:33 +0000 Subject: [PATCH 4/6] more tests --- .../integration/OidcAccountEndpointIT.java | 33 ++++++++++++++++++- .../integration/OidcUcAccountEndpointIT.java | 20 ++++++++++- .../OidcUcWorkspaceEndpointIT.java | 20 ++++++++++- .../integration/OidcWorkspaceEndpointIT.java | 20 ++++++++++- 4 files changed, 89 insertions(+), 4 deletions(-) diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcAccountEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcAccountEndpointIT.java index 9c6f3db99..810a92d25 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcAccountEndpointIT.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcAccountEndpointIT.java @@ -1,18 +1,20 @@ package com.databricks.sdk.integration; import com.databricks.sdk.AccountClient; +import com.databricks.sdk.core.DatabricksConfig; import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; import com.databricks.sdk.integration.framework.EnvContext; import com.databricks.sdk.integration.framework.EnvTest; import java.io.IOException; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.api.extension.ExtendWith; @EnvContext("account") @ExtendWith(EnvTest.class) public class OidcAccountEndpointIT { @Test - void lists(AccountClient a) throws IOException { + void checkEndpoints(AccountClient a) throws IOException { OpenIDConnectEndpoints endpoints = a.config().getOidcEndpoints(); String host = a.config().getHost(); String accountId = a.config().getAccountId(); @@ -28,4 +30,33 @@ void lists(AccountClient a) throws IOException { .equals(host + "/oidc/accounts/" + accountId + "/v1/token"); } } + + @Test + void unifiedEndpoints(AccountClient a) throws IOException { + DatabricksConfig cfg = a.config(); + cfg.setExperimentalIsUnifiedHost(true); + OpenIDConnectEndpoints endpoints = cfg.getOidcEndpoints(); + String host = cfg.getHost(); + String accountId = cfg.getAccountId(); + assert endpoints + .getAuthorizationEndpoint() + .equals(host + "/oidc/accounts/" + accountId + "/v1/authorize"); + assert endpoints.getTokenEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/token"); + } + + @Test + @EnabledIfEnvironmentVariable(named = "UNIFIED_HOST", matches = ".+") + void unifiedEndpointsForSpog(AccountClient a) throws IOException { + String unifiedHost = System.getenv("UNIFIED_HOST"); + DatabricksConfig cfg = a.config(); + cfg.setHost(unifiedHost); + cfg.setExperimentalIsUnifiedHost(true); + OpenIDConnectEndpoints endpoints = cfg.getOidcEndpoints(); + String host = cfg.getHost(); + String accountId = cfg.getAccountId(); + assert endpoints + .getAuthorizationEndpoint() + .equals(host + "/oidc/accounts/" + accountId + "/v1/authorize"); + assert endpoints.getTokenEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/token"); + } } diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcAccountEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcAccountEndpointIT.java index 369f5ca04..edb6f6da6 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcAccountEndpointIT.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcAccountEndpointIT.java @@ -1,18 +1,20 @@ package com.databricks.sdk.integration; import com.databricks.sdk.AccountClient; +import com.databricks.sdk.core.DatabricksConfig; import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; import com.databricks.sdk.integration.framework.EnvContext; import com.databricks.sdk.integration.framework.EnvTest; import java.io.IOException; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.api.extension.ExtendWith; @EnvContext("ucacct") @ExtendWith(EnvTest.class) public class OidcUcAccountEndpointIT { @Test - void lists(AccountClient a) throws IOException { + void checkEndpoints(AccountClient a) throws IOException { OpenIDConnectEndpoints endpoints = a.config().getOidcEndpoints(); String host = a.config().getHost(); String accountId = a.config().getAccountId(); @@ -28,4 +30,20 @@ void lists(AccountClient a) throws IOException { .equals(host + "/oidc/accounts/" + accountId + "/v1/token"); } } + + @Test + @EnabledIfEnvironmentVariable(named = "UNIFIED_HOST", matches = ".+") + void unifiedEndpointsForSpog(AccountClient a) throws IOException { + String unifiedHost = System.getenv("UNIFIED_HOST"); + DatabricksConfig cfg = a.config(); + cfg.setHost(unifiedHost); + cfg.setExperimentalIsUnifiedHost(true); + OpenIDConnectEndpoints endpoints = cfg.getOidcEndpoints(); + String host = cfg.getHost(); + String accountId = cfg.getAccountId(); + assert endpoints + .getAuthorizationEndpoint() + .equals(host + "/oidc/accounts/" + accountId + "/v1/authorize"); + assert endpoints.getTokenEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/token"); + } } diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java index 5b02183a9..8d2583b74 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java @@ -1,21 +1,39 @@ package com.databricks.sdk.integration; import com.databricks.sdk.WorkspaceClient; +import com.databricks.sdk.core.DatabricksConfig; import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; import com.databricks.sdk.integration.framework.EnvContext; import com.databricks.sdk.integration.framework.EnvTest; import java.io.IOException; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.api.extension.ExtendWith; @EnvContext("ucws") @ExtendWith(EnvTest.class) public class OidcUcWorkspaceEndpointIT { @Test - void lists(WorkspaceClient w) throws IOException { + void checkEndpoints(WorkspaceClient w) throws IOException { OpenIDConnectEndpoints endpoints = w.config().getOidcEndpoints(); String host = w.config().getHost(); assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/v1/authorize"); assert endpoints.getTokenEndpoint().equals(host + "/oidc/v1/token"); } + + @Test + @EnabledIfEnvironmentVariable(named = "UNIFIED_HOST", matches = ".+") + void unifiedEndpointsForSpog(WorkspaceClient c) throws IOException { + String unifiedHost = System.getenv("UNIFIED_HOST"); + DatabricksConfig cfg = c.config(); + cfg.setHost(unifiedHost); + cfg.setExperimentalIsUnifiedHost(true); + OpenIDConnectEndpoints endpoints = cfg.getOidcEndpoints(); + String host = cfg.getHost(); + String accountId = cfg.getAccountId(); + assert endpoints + .getAuthorizationEndpoint() + .equals(host + "/oidc/accounts/" + accountId + "/v1/authorize"); + assert endpoints.getTokenEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/token"); + } } diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java index d5e06ec7f..67c428504 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java @@ -1,21 +1,39 @@ package com.databricks.sdk.integration; import com.databricks.sdk.WorkspaceClient; +import com.databricks.sdk.core.DatabricksConfig; import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; import com.databricks.sdk.integration.framework.EnvContext; import com.databricks.sdk.integration.framework.EnvTest; import java.io.IOException; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.api.extension.ExtendWith; @EnvContext("workspace") @ExtendWith(EnvTest.class) public class OidcWorkspaceEndpointIT { @Test - void lists(WorkspaceClient w) throws IOException { + void checkEndpoints(WorkspaceClient w) throws IOException { OpenIDConnectEndpoints endpoints = w.config().getOidcEndpoints(); String host = w.config().getHost(); assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/v1/authorize"); assert endpoints.getTokenEndpoint().equals(host + "/oidc/v1/token"); } + + @Test + @EnabledIfEnvironmentVariable(named = "UNIFIED_HOST", matches = ".+") + void unifiedEndpointsForSpog(WorkspaceClient c) throws IOException { + String unifiedHost = System.getenv("UNIFIED_HOST"); + DatabricksConfig cfg = c.config(); + cfg.setHost(unifiedHost); + cfg.setExperimentalIsUnifiedHost(true); + OpenIDConnectEndpoints endpoints = cfg.getOidcEndpoints(); + String host = cfg.getHost(); + String accountId = cfg.getAccountId(); + assert endpoints + .getAuthorizationEndpoint() + .equals(host + "/oidc/accounts/" + accountId + "/v1/authorize"); + assert endpoints.getTokenEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/token"); + } } From 1ec5680afb6b99f34e983bc56fa850c579a519c0 Mon Sep 17 00:00:00 2001 From: Hector Castejon Diaz Date: Mon, 9 Feb 2026 15:54:21 +0000 Subject: [PATCH 5/6] remove wrong tests --- .../integration/OidcUcWorkspaceEndpointIT.java | 18 ------------------ .../integration/OidcWorkspaceEndpointIT.java | 18 ------------------ 2 files changed, 36 deletions(-) diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java index 8d2583b74..6f7b5709e 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcUcWorkspaceEndpointIT.java @@ -1,13 +1,11 @@ package com.databricks.sdk.integration; import com.databricks.sdk.WorkspaceClient; -import com.databricks.sdk.core.DatabricksConfig; import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; import com.databricks.sdk.integration.framework.EnvContext; import com.databricks.sdk.integration.framework.EnvTest; import java.io.IOException; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.api.extension.ExtendWith; @EnvContext("ucws") @@ -20,20 +18,4 @@ void checkEndpoints(WorkspaceClient w) throws IOException { assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/v1/authorize"); assert endpoints.getTokenEndpoint().equals(host + "/oidc/v1/token"); } - - @Test - @EnabledIfEnvironmentVariable(named = "UNIFIED_HOST", matches = ".+") - void unifiedEndpointsForSpog(WorkspaceClient c) throws IOException { - String unifiedHost = System.getenv("UNIFIED_HOST"); - DatabricksConfig cfg = c.config(); - cfg.setHost(unifiedHost); - cfg.setExperimentalIsUnifiedHost(true); - OpenIDConnectEndpoints endpoints = cfg.getOidcEndpoints(); - String host = cfg.getHost(); - String accountId = cfg.getAccountId(); - assert endpoints - .getAuthorizationEndpoint() - .equals(host + "/oidc/accounts/" + accountId + "/v1/authorize"); - assert endpoints.getTokenEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/token"); - } } diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java index 67c428504..800411473 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/OidcWorkspaceEndpointIT.java @@ -1,13 +1,11 @@ package com.databricks.sdk.integration; import com.databricks.sdk.WorkspaceClient; -import com.databricks.sdk.core.DatabricksConfig; import com.databricks.sdk.core.oauth.OpenIDConnectEndpoints; import com.databricks.sdk.integration.framework.EnvContext; import com.databricks.sdk.integration.framework.EnvTest; import java.io.IOException; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.api.extension.ExtendWith; @EnvContext("workspace") @@ -20,20 +18,4 @@ void checkEndpoints(WorkspaceClient w) throws IOException { assert endpoints.getAuthorizationEndpoint().equals(host + "/oidc/v1/authorize"); assert endpoints.getTokenEndpoint().equals(host + "/oidc/v1/token"); } - - @Test - @EnabledIfEnvironmentVariable(named = "UNIFIED_HOST", matches = ".+") - void unifiedEndpointsForSpog(WorkspaceClient c) throws IOException { - String unifiedHost = System.getenv("UNIFIED_HOST"); - DatabricksConfig cfg = c.config(); - cfg.setHost(unifiedHost); - cfg.setExperimentalIsUnifiedHost(true); - OpenIDConnectEndpoints endpoints = cfg.getOidcEndpoints(); - String host = cfg.getHost(); - String accountId = cfg.getAccountId(); - assert endpoints - .getAuthorizationEndpoint() - .equals(host + "/oidc/accounts/" + accountId + "/v1/authorize"); - assert endpoints.getTokenEndpoint().equals(host + "/oidc/accounts/" + accountId + "/v1/token"); - } } From 1673f0354234c7f6afc8839e46fd40e8ed486653 Mon Sep 17 00:00:00 2001 From: Hector Castejon Diaz Date: Tue, 10 Feb 2026 08:03:31 +0000 Subject: [PATCH 6/6] undo --- .vscode/settings.json | 7 +++++-- .../databricks/sdk/core/DatabricksConfig.java | 19 ++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 7b016a89f..8d684a266 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,6 @@ { - "java.compile.nullAnalysis.mode": "automatic" -} \ No newline at end of file + "java.compile.nullAnalysis.mode": "automatic", + "files.watcherExclude": { + "**/target": true + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java index 60621607d..23fd990b9 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java @@ -798,18 +798,15 @@ private OpenIDConnectEndpoints fetchDefaultOidcEndpoints() throws IOException { } if (isAzure() && getAzureClientId() != null) { - ApiClient apiClient = - new ApiClient.Builder() - .withHttpClient(getHttpClient()) - .withGetHostFunc(v -> getHost()) - .build(); - try { - return apiClient.execute( - new Request("GET", "/oidc/.well-known/oauth-authorization-server"), - OpenIDConnectEndpoints.class); - } catch (IOException e) { - throw new DatabricksException("IO error: " + e.getMessage(), e); + Request request = new Request("GET", getHost() + "/oidc/oauth2/v2.0/authorize"); + request.setRedirectionBehavior(false); + Response resp = getHttpClient().execute(request); + String realAuthUrl = resp.getFirstHeader("location"); + if (realAuthUrl == null) { + return null; } + return new OpenIDConnectEndpoints( + realAuthUrl.replaceAll("/authorize", "/token"), realAuthUrl); } if (isAccountClient() && getAccountId() != null) { String prefix = getHost() + "/oidc/accounts/" + getAccountId();