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>]
- För att getvalues för
<server-hostname>
och<http-path>
, se 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);
}
}
-
Set
DATABRICKS_SERVER_HOSTNAME
- ochDATABRICKS_HTTP_PATH
-miljön values till azure Databricks-målberäkningsresursens Server Hostname respektive HTTP-sökvägvalues. För att get dessa values, se Beräkningsinställningar för Databricks JDBC-drivrutinen. Se dokumentationen för ditt operativsystem angående set miljövariabler. - 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:
- 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)
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 Get Microsoft Entra ID-tokens för användare med hjälp av Azure CLI.
- För en Microsoft Entra ID-tjänstprincipal, se Get 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 Refresh en Microsoft Entra ID-åtkomsttoken. Anvisningar om hur du refresh token finns i avsnittet Configuring Authentication > Using OAuth 2.0
i Databricks JDBC Driver Guide.
För att autentisera med en Microsoft Entra-ID-token, konfigurera set enligt följande.
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 set 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. - Om du vill getvalues för
<server-hostname>
och<http-path>
läser du 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.
- Om du vill skapa en OAuth 2.0-token för tokenöverföringsautentisering för tjänstens huvudnamn i Microsoft Entra-ID, se Manually generate och använd åtkomsttoken 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. Upprepa den här processen om du vill generate en ny OAuth 2.0-token.
Om du vill autentisera med OAuth 2.0-tokens direktautentisering set 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 set 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.) - För att getvalues för
<server-hostname>
och<http-path>
, se 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 refresh förfallna OAuth 2.0-token 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-användar-till-dator (U2M) eller OAuth 2.0 webbläsarbaserad autentisering set 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 set 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 refresh-token. - Om du vill getvalues för
<server-hostname>
och<http-path>
, läs 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 klient credentials autentisering.
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 OAuth M2M- eller OAuth 2.0-klient credentials autentisering:
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-klient credentials autentisering. Microsoft Entra-ID-hemligheter stöds inte.
Skapa en Azure Databricks OAuth-hemlighet för tjänstens huvudnamn. Det gör du genom att se manuellt generate och använda åtkomsttokens för OAuth M2M-autentisering.
Ge tjänstens huvudnamn åtkomst till klustret eller informationslagret. Se Beräkningsbehörigheter eller Hantera ett SQL-lager.
Autentisera med OAuth från maskin till maskin (M2M) eller OAuth 2.0-klient credentials-autentisering, använd följande konfiguration set.
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 set 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-klient credentials-autentisering.) - För att getvalues för
<server-hostname>
och<http-path>
, se 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.