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);
  }
}
  • DATABRICKS_SERVER_HOSTNAME Ange miljövärdena och DATABRICKS_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ä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:

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:

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.

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:

  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-klientautentiseringsuppgifter. 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 läsa Manuellt generera och använda åtkomsttoken för OAuth M2M-autentisering.

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

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