Dela via


Autentiseringsinställningar för Databricks JDBC-drivrutinen

I den här artikeln beskrivs hur du konfigurerar autentiseringsinställningar för Azure Databricks 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>]

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- och DATABRICKS_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äng SELECT .

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

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:

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.

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:

  1. 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.

  2. 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.

  3. 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.

Mer information Using M2M Based Authentication finns i avsnittet i drivrutinsguiden för Databricks JDBC.