注意
本文适用于 Databricks JDBC Simba 驱动程序。 有关 Databricks 开发的 JDBC 驱动程序,请参阅 Databricks JDBC 驱动程序(OSS)。
本文介绍了如何配置 Databricks JDBC 驱动程序的 Azure Databricks 身份验证设置。
Databricks JDBC 驱动程序支持以下 Azure Databricks 身份验证类型:
- Microsoft Entra ID 令牌
- OAuth 2.0 令牌
- OAuth 用户到计算机 (U2M) 身份验证
- Microsoft Entra ID OAuth 用户到计算机 (U2M) 身份验证
- OAuth 计算机到计算机 (M2M) 身份验证
- Microsoft Entra ID OAuth 机器对机器 (M2M) 身份验证
Microsoft Entra ID 令牌
ODBC 和 JDBC 驱动程序 2.6.15 及更高版本支持 Azure Databricks 用户或 Microsoft Entra ID 服务主体的 Microsoft Entra ID 令牌。
若要创建 Microsoft Entra ID 访问令牌,请执行以下操作:
- 对于 Azure Databricks 用户,可以使用 Azure CLI。 请参阅使用 Azure CLI 获取用户的 Microsoft Entra ID 令牌。
- 有关 Microsoft Entra ID 服务主体,请参阅使用 Azure CLI 获取 Microsoft Entra ID 访问令牌。 若要创建Microsoft Entra ID 托管服务主体,请参阅 服务主体。
Microsoft Entra ID 访问令牌的默认生存期约为 1 小时。 可以通过编程方式刷新现有会话的访问令牌,而无需通过运行刷新 Microsoft Entra ID 访问令牌中的代码来中断连接。 有关如何刷新令牌的说明,请参阅 Configuring Authentication > Using OAuth 2.0
中的 部分。
要使用 Microsoft Entra ID 令牌进行身份验证,请设置以下配置。
对于带有嵌入式常规配置属性和敏感凭据属性的 JDBC 连接 URL:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<microsoft-entra-id-token>
对于在 JDBC 连接 URL 外部设置了常规配置属性和敏感凭据属性的 Java 代码:
// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "0");
p.put("Auth_AccessToken", "<microsoft-entra-id-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
- 在前面的 URL 或 Java 代码中,将
<microsoft-entra-id-token>
替换为 Microsoft Entra ID 令牌。 - 若要获取
<server-hostname>
和<http-path>
的值,请参阅 Databricks JDBC 驱动程序的计算设置。
有关详细信息,请参阅 Token Pass-through
中的 部分。
OAuth 2.0 令牌
JDBC 驱动程序 2.6.36 及更高版本支持针对 Microsoft Entra ID 服务主体的 OAuth 2.0 令牌。 这也称为 OAuth 2.0 令牌直通身份验证。
- 若要为Microsoft Entra ID 服务主体创建用于令牌直通身份验证的 OAuth 2.0 令牌,请参阅 手动生成和使用 OAuth 服务主体身份验证的访问令牌。 记下服务主体的 OAuth
access_token
值。 - 若要创建Microsoft Entra ID 托管服务主体,请参阅 服务主体。
重要
JDBC 驱动程序 2.6.36 及更高版本支持使用 Azure Databricks OAuth 机密创建 OAuth 2.0 令牌。 不支持 Microsoft Entra ID 机密。
OAuth 2.0 令牌的默认生存期为 1 小时。 若要生成新的 OAuth 2.0 令牌,请重复此过程。
要使用 OAuth 2.0 令牌直通身份验证进行身份验证,请设置以下配置。
对于带有嵌入式常规配置属性和敏感凭据属性的 JDBC 连接 URL:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<oauth-token>
对于在 JDBC 连接 URL 外部设置了常规配置属性和敏感凭据属性的 Java 代码:
// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "0");
p.put("Auth_AccessToken", "<oauth-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
- 在前面的 URL 或 Java 代码中,将
<oauth-token>
替换为 Azure Databricks OAuth 令牌。 (OAuth 2.0 令牌直通身份验证不支持 Microsoft Entra ID 令牌。) - 若要获取
<server-hostname>
和<http-path>
的值,请参阅 Databricks JDBC 驱动程序的计算设置。
有关详细信息,请参阅 Token Pass-through
中的 部分。
OAuth 用户到计算机 (U2M) 身份验证
JDBC 驱动程序 2.6.36 及更高版本支持针对 Azure Databricks 用户的 OAuth 用户到计算机 (U2M) 身份验证。 这也称为 OAuth 2.0 基于浏览器的身份验证。
OAuth U2M 或基于 OAuth 2.0 浏览器的身份验证没有先决条件。 OAuth 2.0 令牌的默认生存期为 1 小时。 OAuth U2M 或基于 OAuth 2.0 浏览器的身份验证应自动刷新过期的 OAuth 2.0 令牌。
注意
OAuth U2M 或基于 OAuth 2.0 浏览器的身份验证仅适用于在本地运行的应用程序。 它不适用于基于服务器的或基于云的应用程序。
要使用 OAuth 用户到计算机 (U2M) 或基于 OAuth 2.0 浏览器的身份验证进行身份验证,请设置以下配置。
对于带有嵌入式常规配置属性和敏感凭据属性的 JDBC 连接 URL:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0
对于在 JDBC 连接 URL 外部设置了常规配置属性和敏感凭据属性的 Java 代码:
// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "2")
p.put("TokenCachePassPhrase", "<passphrase>");
p.put("EnableTokenCache", "0");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
- 在上述的 URL 或 Java 代码中,将
<passphrase>
替换为你选择的密码短语。 驱动程序使用此密钥进行刷新令牌加密。 - 若要获取
<server-hostname>
和<http-path>
的值,请参阅 Databricks JDBC 驱动程序的计算设置。
有关详细信息,请参阅 Using Browser Based Authentication
中的 部分。
Microsoft Entra ID OAuth 用户到计算机 (U2M) 身份验证
JDBC 驱动程序 2.7.1 及更高版本支持 Azure Databricks 用户的 Microsoft Entra ID OAuth 用户到计算机 (U2M) 身份验证。 这也称为 OAuth 2.0 基于浏览器的身份验证。
OAuth U2M 或基于 OAuth 2.0 浏览器的身份验证没有先决条件。 OAuth 2.0 令牌的默认生存期为 1 小时。 OAuth U2M 或基于 OAuth 2.0 浏览器的身份验证应自动刷新过期的 OAuth 2.0 令牌。
注意
OAuth U2M 或基于 OAuth 2.0 浏览器的身份验证仅适用于在本地运行的应用程序。 它不适用于基于服务器的或基于云的应用程序。
若要使用 Microsoft Entra ID OAuth 用户到计算机(U2M)进行身份验证,必须在 Microsoft Entra ID 中注册 OAuth 客户端(应用程序),请参阅 在 Microsoft Entra ID 中注册客户端应用程序。 然后设置以下配置:
对于带有嵌入式常规配置属性和敏感凭据属性的 JDBC 连接 URL:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0;OIDCDiscoveryEndpoint=<endpoint>;EnableOIDCDiscovery=true
对于在 JDBC 连接 URL 外部设置了常规配置属性和敏感凭据属性的 Java 代码:
// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "2")
p.put("TokenCachePassPhrase", "<passphrase>");
p.put("EnableTokenCache", "0");
p.put("OIDCDiscoveryEndpoint", "https://login.microsoftonline.com/<azureTenantId>/v2.0/.well-known/openid-configuration");
p.put("EnableOIDCDiscovery", "true");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
- 在上述的 URL 或 Java 代码中,将
<passphrase>
替换为你选择的密码短语。 驱动程序使用此密钥进行刷新令牌加密。 - 若要获取
<server-hostname>
和<http-path>
的值,请参阅 Databricks JDBC 驱动程序的计算设置。
有关详细信息,请参阅 Using Browser Based Authentication
中的 部分。
OAuth 计算机到计算机 (M2M) 身份验证
JDBC 驱动程序 2.6.36 及更高版本支持针对 Microsoft Entra ID 服务主体的 OAuth 计算机到计算机 (M2M) 身份验证。 这也称为 OAuth 2.0 客户端凭据身份验证。
注意
JDBC 2.6.40.1071 解决了旧版本中不支持使用 M2M 连接专用链接工作区的问题。
要配置 OAuth M2M 或 OAuth 2.0 客户端凭据身份验证,请执行以下操作:
创建 Microsoft Entra ID 托管服务主体,然后将其分配给 Azure Databricks 帐户和工作区。 为此,请参阅 服务主体。
为服务主体创建 Azure Databricks OAuth 机密。 为此,请参阅 手动生成和使用访问令牌进行 OAuth 服务主体身份验证。
要使用 OAuth 计算机到计算机 (M2M) 或 OAuth 2.0 客户端凭据身份验证进行身份验证,请设置以下配置。
对于带有嵌入式常规配置属性和敏感凭据属性的 JDBC 连接 URL:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>
对于在 JDBC 连接 URL 外部设置了常规配置属性和敏感凭据属性的 Java 代码:
// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "1");
p.put("OAuth2ClientId", "<service-principal-application-id>");
p.put("OAuth2Secret", "<service-principal-oauth-secret>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
- 在前面的 URL 或 Java 代码中,替换以下占位符:
- 将
<service-principal-application-id>
替换为服务主体的“应用程序(客户端) ID”值。 - 将
<service-principal-oauth-secret>
替换为服务主体的 Azure Databricks OAuth 机密。 (OAuth M2M 或 OAuth 2.0 客户端凭据身份验证不支持 Microsoft Entra ID 机密。) - 若要获取
<server-hostname>
和<http-path>
的值,请参阅 Databricks JDBC 驱动程序的计算设置。
- 将
有关详细信息,请参阅 Using M2M Based Authentication
中的 部分。
Microsoft Entra ID OAuth 计算机到计算机 (M2M) 身份验证
JDBC 驱动程序 2.7.1 及更高版本支持 Microsoft Entra ID 服务主体的 Microsoft Entra ID OAuth 计算机到计算机(M2M)身份验证。 这也称为 OAuth 2.0 客户端凭据身份验证。
若要配置 Entra ID OAuth M2M 身份验证,请执行以下作:
创建 Microsoft Entra ID 托管服务主体,然后将其分配给 Azure Databricks 帐户和工作区。 为此,请参阅 服务主体。
为服务主体创建 Entra ID OAuth 机密。 为此,请参阅 手动生成和使用访问令牌进行 OAuth 服务主体身份验证。
若要使用 Entra ID OAuth 计算机到计算机(M2M)进行身份验证,请设置以下配置。
对于带有嵌入式常规配置属性和敏感凭据属性的 JDBC 连接 URL:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>;OIDCDiscoveryEndpoint=<endpoint>;EnableOIDCDiscovery=true
对于在 JDBC 连接 URL 外部设置了常规配置属性和敏感凭据属性的 Java 代码:
// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "1");
p.put("OAuth2ClientId", "<entra-id-service-principal-application-id>");
p.put("OAuth2Secret", "<entra-id-service-principal-client-secret>");
p.put("OIDCDiscoveryEndpoint", "https://login.microsoftonline.com/<AzureTenantId>/v2.0/.well-known/openid-configuration");
p.put("EnableOIDCDiscovery", "true");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
- 在前面的 URL 或 Java 代码中,替换以下占位符:
- 将
<entra-id-service-principal-application-id>
替换为 Entra 中服务主体的应用程序 ID 值。 - 将
<entra-id-service-principal-client-secret>
替换为 Entra 中的服务主体机密。 这是在 Microsoft Entra ID 的证书和机密中创建的客户端密码。 - 若要获取
<server-hostname>
和<http-path>
的值,请参阅 Databricks JDBC 驱动程序的计算设置。
- 将