Aller au contenu principal

Paramètres d'authentification pour le Driver JDBC Databricks

Le Databricks JDBC Driver prend en charge plusieurs méthodes d'authentification selon votre cas d'utilisation. Cette page décrit comment configurer chaque méthode et répertorie les propriétés de connexion requises.

Pour configurer l'authentification du Driver JDBC Databricks, utilisez l'une des méthodes suivantes :

Transmission de jeton OAuth 2.0

Le driver JDBC accepte les jetons OAuth dans la propriété Auth_AccessToken. Vous pouvez transmettre directement un jeton OAuth Databricks ou un jeton web JSON (JWT) d'un fournisseur d'identité externe. Si vous transmettez un jeton IdP externe, Databricks l'échange automatiquement contre un jeton Databricks à l'aide de la fédération de jetons.

Dans les exemples suivants, remplacez les espaces réservés suivants :

Les propriétés requises sont :

  • AuthMech défini sur 11 (authentification OAuth 2.0)
  • Auth_Flow défini sur 0 (mode de transmission de jetons)
  • Auth_AccessToken défini sur un jeton OAuth Databricks ou un JWT IdP externe

Voir propriétés d'authentification.

Pour une URL de connexion JDBC :

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<oauth-token>

Dans le code Java :

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);
// ...

Fédération de jetons avec un fournisseur d'identité externe

Si vous vous authentifiez avec un jeton provenant d'un fournisseur d'identité externe tel qu'Okta, Microsoft Entra ID, Keycloak ou tout IdP compatible OIDC, Databricks effectue automatiquement l'échange de jetons. La configuration JDBC est la même que la transmission de jeton. Transmettez le jeton IdP dans Auth_AccessToken et le Driver gère le reste.

Avant d'utiliser la fédération de jetons, vous devez :

  1. Créez une politique de fédération dans votre compte Databricks qui fait confiance au fournisseur d'identité externe. Une politique de fédération spécifie l'URL de l'émetteur, les valeurs d'audience attendues et la revendication JWT utilisée pour mapper à un utilisateur Databricks. Consultez Authentifier l'accès à Databricks à l'aide de la fédération de jetons OAuth.
  2. Vérifiez qu'un utilisateur Databricks correspondant existe. L'e-mail de l'utilisateur ou un autre identifiant doit correspondre à la valeur subject_claim dans le JWT.
  3. Vérifiez que l'endpoint de découverte OIDC de l'IdP est accessible publiquement afin que Databricks puisse récupérer les clés de signature pour vérifier le jeton.

Authentification OAuth d'utilisateur à machine (U2M)

L'authentification OAuth U2M vous permet de vous connecter à Databricks via un navigateur. Le driver ouvre une fenêtre de navigateur, vous vous authentifiez, et le driver reçoit un jeton OAuth. Le driver utilise l'ID client OAuth intégré databricks-sql-jdbc.

Ce type d'authentification n'a pas de prérequis. Les jetons ont une durée de vie default d'une heure et refresh automatiquement lorsqu'ils expirent.

remarque

OAuth U2M ne fonctionne qu'avec des applications exécutées localement. Cela ne fonctionne pas avec les applications basées sur un serveur ou basées sur le cloud.

Dans les exemples suivants, remplacez les espaces réservés suivants :

Les propriétés requises sont :

  • AuthMech défini sur 11 (authentification OAuth 2.0)
  • Auth_Flow défini sur 2 (mode U2M basé sur navigateur)
  • TokenCachePassPhrase définie sur la phrase secrète utilisée pour chiffrer vos informations d'identification OAuth U2M mises en cache. Ceci empêche les authentifications répétées basées sur le navigateur. Pour désactiver la mise en cache de jetons, définissez EnableTokenCache sur 0.

Voir propriétés d'authentification.

Dans une URL de connexion JDBC :

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0

Dans le code Java :

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);
// ...

Authentification OAuth machine à machine (M2M)

Le Driver JDBC prend en charge l'authentification OAuth machine à machine (M2M) à l'aide d'un Service Principal Databricks, également appelée authentification OAuth 2.0 identifiants client . Consultez Autoriser l’accès du Service Principal à Databricks avec OAuth.

Pour configurer l'authentification M2M :

  1. Créez un Service Principal Databricks dans votre Workspace Databricks. Consultez Autoriser l'accès de service principal à Databricks avec OAuth.
  2. Créez un secret OAuth pour le Service Principal. Notez l' UUID ou l' ID d'application et la valeur du secret .
  3. Donnez au Service Principal l'accès à votre cluster ou votre warehouse. Consultez les autorisations Compute ou gérez un SQL Warehouse.

Dans les exemples suivants, remplacez les espaces réservés suivants :

Les propriétés requises sont :

  • AuthMech défini sur 11 (authentification OAuth 2.0)
  • Auth_Flow défini sur 1 (mode d’informations d’identification client M2M)
  • OAuth2ClientID défini sur la valeur UUID ou ID d'application du service principal
  • OAuth2Secret définie sur la valeur Secret OAuth du Service Principal.

Voir propriétés d'authentification.

Dans une URL de connexion JDBC :

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>

Dans le code Java :

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);
// ...

Jeton d'accès personnel Databricks

remarque

Les jetons d'accès personnels sont les plus adaptés aux scénarios de test. Databricks recommande des types d'authentification plus sécurisés pour les scénarios de production.

Pour créer un jeton d'accès personnel Databricks, suivez les étapes de la section Créer des jetons d'accès personnels pour les utilisateurs de Workspace.

Dans les exemples suivants, remplacez les espaces réservés suivants :

Les propriétés requises sont :

  • AuthMech défini sur 3 (authentification par jeton)
  • UID défini sur la chaîne littérale token
  • PWD ou password défini sur la valeur de votre jeton d'accès personnel Databricks

Voir propriétés d'authentification.

Dans une URL de connexion JDBC :

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=3;UID=token;PWD=<personal-access-token>

Dans le code Java :

Java
// ...
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);
// ...