Autentiseringsinställningar för Databricks JDBC-drivrutinen
För att konfigurera en Azure Databricks-anslutning för Databricks JDBC-drivrutinen måste du kombinera dina beräkningsresursinställningar, eventuella inställningar för drivrutinsfunktioner och följande autentiseringsinställningar till en JDBC-anslutnings-URL eller en programmatisk samling med JDBC-anslutningsegenskaper.
JDBC-anslutnings-URL:er använder följande format:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]
- Information om hur du hämtar värdena för
<server-hostname>
och<http-path>
finns i Beräkningsinställningar för Databricks JDBC-drivrutinen. - Ersätt
<setting>=<value>
efter behov för var och en av anslutningsegenskaperna enligt beskrivningen i följande avsnitt. - Du kan också lägga till särskilda eller avancerade inställningar för drivrutinsfunktioner.
Programmatiska samlingar av JDBC-anslutningsegenskaper kan användas i Java-kod, till exempel följande exempel:
package org.example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Properties;
public class Main {
public static void main(String[] args) throws Exception {
Class.forName("com.databricks.client.jdbc.Driver");
String url = "jdbc:databricks://" + System.getenv("DATABRICKS_SERVER_HOSTNAME") + ":443";
Properties p = new java.util.Properties();
p.put("httpPath", System.getenv("DATABRICKS_HTTP_PATH"));
p.put("<setting1>", "<value1");
p.put("<setting2>", "<value2");
p.put("<settingN>", "<valueN");
try (Connection conn = DriverManager.getConnection(url, p)) {
Statement stmt = conn.createStatement();
try (ResultSet rs = stmt.executeQuery("<query>")) {
ResultSetMetaData md = rs.getMetaData();
String[] columns = new String[md.getColumnCount()];
for (int i = 0; i < columns.length; i++) {
columns[i] = md.getColumnName(i + 1);
}
while (rs.next()) {
System.out.print("Row " + rs.getRow() + "=[");
for (int i = 0; i < columns.length; i++) {
if (i != 0) {
System.out.print(", ");
}
System.out.print(columns[i] + "='" + rs.getObject(i + 1) + "'");
}
System.out.println(")]");
}
}
}
System.exit(0);
}
}
DATABRICKS_SERVER_HOSTNAME
Ange miljövärdena ochDATABRICKS_HTTP_PATH
till Azure Databricks-målberäkningsresursens servervärdnamn respektive HTTP-sökvägsvärden. Information om hur du hämtar dessa värden finns i Beräkningsinställningar för Databricks JDBC-drivrutinen. Information om hur du anger miljövariabler finns i dokumentationen till operativsystemet.- Ersätt
<setting>
och efter behov för var och<value>
en av anslutningsegenskaperna enligt beskrivningen i följande avsnitt. - Du kan också lägga till särskilda eller avancerade inställningar för drivrutinsfunktioner, vanligtvis som ytterligare
<setting>
och<value>
par. - I det här exemplet ersätter du
<query>
med en SQL-frågesträngSELECT
.
Om du använder en anslutnings-URL eller en samling anslutningsegenskaper beror på kraven för målappen, verktyget, klienten, SDK:n eller API:et. Exempel på JDBC-anslutnings-URL:er och programmatiska samlingar av JDBC-anslutningsegenskaper finns i den här artikeln för varje Azure Databricks-autentiseringstyp som stöds.
Databricks JDBC-drivrutinen stöder följande Azure Databricks-autentiseringstyper:
- Personlig åtkomsttoken för Azure Databricks
- Microsoft Entra ID-token
- OAuth 2.0-token
- OAuth-autentisering från användare till dator (U2M)
- OAuth-autentisering från dator till dator (M2M)
Personlig åtkomsttoken för Azure Databricks
Om du vill skapa en personlig åtkomsttoken för Azure Databricks följer du stegen i Personliga åtkomsttoken för Azure Databricks för arbetsyteanvändare.
Om du vill autentisera med en personlig åtkomsttoken för Azure Databricks anger du följande konfiguration.
Så här konfigurerar du en JDBC-anslutnings-URL med inbäddade allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter med hjälp av din PAT:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=3;UID=token;PWD=<personal-access-token>
För Java-kod med allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter som anges utanför JDBC-anslutnings-URL:en:
// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "3");
p.put("UID", "token");
p.put("PWD", "<personal-access-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
- Ett fullständigt Java-kodexempel som du kan anpassa föregående kodfragment till dina egna behov finns i kodexemplet i början av den här artikeln.
- I föregående URL eller Java-kod ersätter du
<personal-access-token>
med Databricks personliga åtkomsttoken för din arbetsyteanvändare. - Information om hur du hämtar värdena för
<server-hostname>
och<http-path>
finns i Beräkningsinställningar för Databricks JDBC-drivrutinen.
Microsoft Entra ID-token
ODBC- och JDBC-drivrutinerna 2.6.15 och senare stöder Microsoft Entra ID-token för en Azure Databricks-användare eller ett Microsoft Entra ID-tjänsthuvudnamn.
Gör följande för att skapa en Microsoft Entra ID-åtkomsttoken:
- För en Azure Databricks-användare kan du använda Azure CLI. Se Hämta Microsoft Entra-ID-token för användare med hjälp av Azure CLI.
- Ett microsoft entra-ID-tjänsthuvudnamn finns i Hämta en Microsoft Entra ID-åtkomsttoken med Azure CLI. Information om hur du skapar ett microsoft entra-ID för hanterad tjänsthuvudnamn finns i Hantera tjänstens huvudnamn.
Microsoft Entra ID-åtkomsttoken har en standardlivslängd på cirka 1 timme. En åtkomsttoken kan uppdateras programmatiskt för en befintlig session utan att bryta anslutningen genom att köra koden i Uppdatera en Microsoft Entra-ID-åtkomsttoken. Anvisningar om hur du uppdaterar token finns i avsnittet Configuring Authentication > Using OAuth 2.0
i Drivrutinsguiden för Databricks JDBC.
Om du vill autentisera med en Microsoft Entra-ID-token anger du följande konfiguration.
För en JDBC-anslutnings-URL med inbäddade allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<microsoft-entra-id-token>
För Java-kod med allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter som anges utanför JDBC-anslutnings-URL:en:
// ...
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);
// ...
- Ett fullständigt Java-kodexempel som du kan anpassa föregående kodfragment till dina egna behov finns i kodexemplet i början av den här artikeln.
- I föregående URL eller Java-kod ersätter du
<microsoft-entra-id-token>
med Microsoft Entra-ID-token. - Information om hur du hämtar värdena för
<server-hostname>
och<http-path>
finns i Beräkningsinställningar för Databricks JDBC-drivrutinen.
Mer information Token Pass-through
finns i avsnittet i drivrutinsguiden för Databricks JDBC.
OAuth 2.0-token
JDBC-drivrutinen 2.6.36 och senare stöder en OAuth 2.0-token för ett Microsoft Entra ID-tjänsthuvudnamn. Detta kallas även OAuth 2.0-token för direktautentisering.
- Information om hur du skapar en OAuth 2.0-token för token-direktautentisering för tjänstens huvudnamn för Microsoft Entra-ID finns i Generera och använda åtkomsttoken manuellt för OAuth M2M-autentisering. Anteckna tjänstens huvudnamns OAuth-värde
access_token
. - Information om hur du skapar ett microsoft entra-ID för hanterad tjänsthuvudnamn finns i Hantera tjänstens huvudnamn.
Viktigt!
JDBC-drivrutinen 2.6.36 och senare stöder användning av Azure Databricks OAuth-hemligheter för att skapa OAuth 2.0-token. Microsoft Entra-ID-hemligheter stöds inte.
OAuth 2.0-token har en standardlivslängd på 1 timme. Om du vill generera en ny OAuth 2.0-token upprepar du den här processen.
Om du vill autentisera med OAuth 2.0-tokens direktautentisering anger du följande konfiguration.
För en JDBC-anslutnings-URL med inbäddade allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<oauth-token>
För Java-kod med allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter som anges utanför JDBC-anslutnings-URL:en:
// ...
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);
// ...
- Ett fullständigt Java-kodexempel som du kan anpassa föregående kodfragment till dina egna behov finns i kodexemplet i början av den här artikeln.
- I föregående URL eller Java-kod ersätter du
<oauth-token>
med Azure Databricks OAuth-token. (Microsoft Entra ID-token stöds inte för OAuth 2.0-tokens direktautentisering.) - Information om hur du hämtar värdena för
<server-hostname>
och<http-path>
finns i Beräkningsinställningar för Databricks JDBC-drivrutinen.
Mer information Token Pass-through
finns i avsnittet i drivrutinsguiden för Databricks JDBC.
OAuth-autentisering från användare till dator (U2M)
JDBC-drivrutinen 2.6.36 och senare stöder OAuth-autentisering från användare till dator (U2M) för en Azure Databricks-användare. Detta kallas även OAuth 2.0 webbläsarbaserad autentisering.
OAuth U2M- eller OAuth 2.0-webbläsarbaserad autentisering har inga krav. OAuth 2.0-token har en standardlivslängd på 1 timme. OAuth U2M- eller OAuth 2.0-webbläsarbaserad autentisering bör uppdatera OAuth 2.0-token som upphört att gälla automatiskt.
Kommentar
OAuth U2M- eller OAuth 2.0-webbläsarbaserad autentisering fungerar endast med program som körs lokalt. Det fungerar inte med serverbaserade eller molnbaserade program.
Om du vill autentisera med OAuth från användare till dator (U2M) eller OAuth 2.0 webbläsarbaserad autentisering anger du följande konfiguration.
För en JDBC-anslutnings-URL med inbäddade allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0
För Java-kod med allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter som anges utanför JDBC-anslutnings-URL:en:
// ...
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);
// ...
- Ett fullständigt Java-kodexempel som du kan anpassa föregående kodfragment till dina egna behov finns i kodexemplet i början av den här artikeln.
- I föregående URL eller Java-kod ersätter du
<passphrase>
med valfri lösenfras. Drivrutinen använder den här nyckeln för kryptering av uppdateringstoken. - Information om hur du hämtar värdena för
<server-hostname>
och<http-path>
finns i Beräkningsinställningar för Databricks JDBC-drivrutinen.
Mer information Using Browser Based Authentication
finns i avsnittet i drivrutinsguiden för Databricks JDBC.
OAuth-autentisering från dator till dator (M2M)
JDBC-drivrutinen 2.6.36 och senare stöder M2M-autentisering (machine-to-machine) för en Microsoft Entra ID-tjänsthuvudnamn. Detta kallas även OAuth 2.0-klientautentiseringsuppgifter.
Kommentar
JDBC 2.6.40.1071 löser problemet i äldre versioner att det inte gick att ansluta med M2M för privata länkarbetsytor.
Gör följande för att konfigurera autentiseringsuppgifterna för OAuth M2M- eller OAuth 2.0-klienten:
Skapa ett Microsoft Entra ID-hanterat tjänsthuvudnamn och tilldela det sedan till Azure Databricks-konton och arbetsytor. Det gör du genom att läsa Hantera tjänstens huvudnamn.
Viktigt!
JDBC-drivrutinen 2.6.36 och senare stöder Azure Databricks OAuth-hemligheter för OAuth M2M- eller OAuth 2.0-klientautentiseringsuppgifter. Microsoft Entra-ID-hemligheter stöds inte.
Skapa en Azure Databricks OAuth-hemlighet för tjänstens huvudnamn. Det gör du genom att läsa Manuellt generera och använda åtkomsttoken för OAuth M2M-autentisering.
Ge tjänstens huvudnamn åtkomst till klustret eller informationslagret. Se Beräkningsbehörigheter eller Hantera ett SQL-lager.
Om du vill autentisera med hjälp av autentiseringsuppgifter för OAuth från dator till dator (M2M) eller OAuth 2.0-klientautentisering anger du följande konfiguration.
För en JDBC-anslutnings-URL med inbäddade allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>
För Java-kod med allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter som anges utanför JDBC-anslutnings-URL:en:
// ...
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);
// ...
- Ett fullständigt Java-kodexempel som du kan anpassa föregående kodfragment till dina egna behov finns i kodexemplet i början av den här artikeln.
- Ersätt följande platshållare i föregående URL eller Java-kod:
- Ersätt
<service-principal-application-id>
med tjänstens huvudnamns program-ID (klient)-värde. - Ersätt
<service-principal-oauth-secret>
med tjänstens huvudnamns Azure Databricks OAuth-hemlighet. (Microsoft Entra ID-hemligheter stöds inte för OAuth M2M- eller OAuth 2.0-klientautentiseringsuppgifter.) - Information om hur du hämtar värdena för
<server-hostname>
och<http-path>
finns i Beräkningsinställningar för Databricks JDBC-drivrutinen.
- Ersätt
Mer information Using M2M Based Authentication
finns i avsnittet i drivrutinsguiden för Databricks JDBC.