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 des jetons OAuth 2.0 (y compris la fédération de jetons avec des fournisseurs d’identité externes)
- Authentification OAuth utilisateur-à-machine (U2M)
- Authentification OAuth machine à machine (M2M)
- Jeton d'accès personnel Databricks
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 :
<oauth-token>avec un jeton Databricks OAuth 2.0 ou un JWT IdP externe.- Pour obtenir les valeurs de
<server-hostname>et<http-path>, consultez Configurer une connexion à Databricks à l'aide du Driver JDBC Databricks.
Les propriétés requises sont :
AuthMechdéfini sur11(authentification OAuth 2.0)Auth_Flowdéfini sur0(mode de transmission de jetons)Auth_AccessTokendé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 :
// ...
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 :
- 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.
- Vérifiez qu'un utilisateur Databricks correspondant existe. L'e-mail de l'utilisateur ou un autre identifiant doit correspondre à la valeur
subject_claimdans le JWT. - 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.
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 :
<passphrase>avec une phrase secrète de votre choix. Le driver utilise cette clé pour le chiffrement des jetons de refresh.- Pour obtenir les valeurs de
<server-hostname>et<http-path>, consultez Configurer une connexion à Databricks à l'aide du Driver JDBC Databricks.
Les propriétés requises sont :
AuthMechdéfini sur11(authentification OAuth 2.0)Auth_Flowdéfini sur2(mode U2M basé sur navigateur)TokenCachePassPhrasedé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éfinissezEnableTokenCachesur0.
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 :
// ...
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 :
- Créez un Service Principal Databricks dans votre Workspace Databricks. Consultez Autoriser l'accès de service principal à Databricks avec OAuth.
- Créez un secret OAuth pour le Service Principal. Notez l' UUID ou l' ID d'application et la valeur du secret .
- 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 :
<service-principal-application-id>avec l' UUID ou l' ID d'application du Service Principal.<service-principal-oauth-secret>avec le **Secret** OAuth du Service Principal.- Pour obtenir les valeurs de
<server-hostname>et<http-path>, consultez Configurer une connexion à Databricks à l'aide du Driver JDBC Databricks.
Les propriétés requises sont :
AuthMechdéfini sur11(authentification OAuth 2.0)Auth_Flowdéfini sur1(mode d’informations d’identification client M2M)OAuth2ClientIDdéfini sur la valeur UUID ou ID d'application du service principalOAuth2Secretdé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 :
// ...
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
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 :
<personal-access-token>avec le jeton d'accès personnel Databricks de votre utilisateur Workspace.- Pour obtenir les valeurs de
<server-hostname>et<http-path>, consultez Configurer une connexion à Databricks à l'aide du Driver JDBC Databricks.
Les propriétés requises sont :
AuthMechdéfini sur3(authentification par jeton)UIDdéfini sur la chaîne littéraletokenPWDoupassworddé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 :
// ...
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);
// ...