Partager via


Se connecter à une application Databricks d’API à l’aide de l’authentification par jeton

Vous pouvez appeler une application Databricks qui expose une API HTTP (par exemple, une application FastAPI ou Gradio) à l’aide de l’authentification par jeton du porteur OAuth 2.0. Cette méthode fonctionne à partir de votre environnement de développement local, d’applications externes et d’autres applications Azure Databricks.

Note

Cette méthode s’applique uniquement aux applications qui exposent des API ou des points de terminaison (accessibles à l’aide /api/ d’itinéraires). Pour les applications qui fournissent uniquement une interface utilisateur ou un traitement en arrière-plan, vous ne pouvez pas vous connecter à l’aide de l’authentification par jeton.

Spécifications

Pour vous connecter à une application Databricks à l’aide de l’authentification par jeton, vous devez répondre aux exigences suivantes :

  • L’application doit exposer au moins un point de terminaison d’API accessible à l’aide des itinéraires /api/.
  • Vous devez disposer d'une autorisation CAN USE sur l’application. Consultez Configurer des autorisations pour une application Databricks.
  • Vous devez être en mesure de générer un jeton d’accès Azure Databricks à l’aide de l’une des méthodes d’authentification prises en charge.

Méthodes d’authentification

Note

Vous ne pouvez pas appeler une application Databricks directement à l’aide d’un jeton d’ID Azure Entra. La fédération de jetons nécessite une étape d’échange de jeton côté client, qu’Azure Databricks n’effectue pas côté serveur. Pour utiliser les jetons d’ID Azure Entra pour l’authentification, vous devez d’abord les échanger pour les jetons OAuth. Consultez S'authentifier avec un jeton de fournisseur d'identité.

Choisissez la méthode d’authentification qui correspond à votre scénario de connexion :

Développement local

Pour vous connecter à partir de votre environnement de développement local, utilisez l’interface CLI Azure Databricks ou les kits sdk avec vos informations d’identification utilisateur.

  1. Connectez-vous avec l’interface CLI :

    databricks auth login --host https://<workspace-url> --profile my-env
    

    Azure Databricks recommande d’utiliser l’authentification utilisateur-machine OAuth (U2M).

  2. Générez un jeton d’accès :

    Interface de ligne de commande (CLI)

    databricks auth token --profile my-env
    

    Python

    from databricks.sdk.core import Config
    config = Config(profile="my-env")
    token = config.oauth_token().access_token
    

Applications externes

Pour l’accès par programmation à partir d’applications externes, utilisez l’authentification du principal de service avec les informations d’identification de machine à machine (M2M). Consultez Autoriser l’accès au principal de service à Azure Databricks avec OAuth.

  1. Créez un principal de service et obtenez l’ID client et le secret. Consultez Principaux de service.

  2. Générez un jeton d’accès à l’aide du Kit de développement logiciel (SDK) Azure Databricks :

    from databricks.sdk import WorkspaceClient
    import requests
    
    # Option 1: Explicit credentials
    wc = WorkspaceClient(
        host="https://<workspace-url>",
        client_id="<service-principal-client-id>",
        client_secret="<service-principal-client-secret>"
    )
    
    # Option 2: Environment variables
    # Set DATABRICKS_HOST, DATABRICKS_CLIENT_ID, DATABRICKS_CLIENT_SECRET
    wc = WorkspaceClient()
    
    # Generate Bearer token
    headers = wc.config.authenticate()
    

À partir d’autres applications Databricks

Lorsque vous vous connectez à partir d’une application Databricks à une autre, l’application gère automatiquement l’authentification à l’aide de son principal de service affecté.

from databricks.sdk import WorkspaceClient
import requests

# No explicit credentials needed, uses app's service principal
wc = WorkspaceClient()
headers = wc.config.authenticate()

Spécifier des étendues OAuth pour l’autorisation utilisateur

Lorsque vous utilisez l’interface CLI Azure Databricks ou les kits SDK avec l’authentification unifiée, comme indiqué dans la section précédente, les outils demandent automatiquement l’étendue de base all-apis . Toutefois, si votre application utilise l’autorisation utilisateur, vous devez demander manuellement un jeton d’accès avec des étendues supplémentaires à l’aide d’un flux OAuth personnalisé.

Assurez-vous que votre jeton d’accès inclut les étendues configurées dans Modifier>l’autorisation utilisateur. Si le jeton n’a pas les étendues requises, les demandes peuvent échouer avec des erreurs 401 ou 403.

Par exemple, la requête suivante demande explicitement un jeton d’accès avec les étendues sql, file.files, et dashboards.genie :

curl --request POST \
https://<databricks-instance>/oidc/v1/token \
--data "client_id=databricks-cli" \
--data "grant_type=authorization_code" \
--data "redirect_uri=<redirect-url>" \
--data "code_verifier=<code-verifier>" \
--data "code=<authorization-code>" \
--data "scope=sql+file.files+dashboards.genie"

Pour obtenir des instructions complètes, consultez Générer manuellement des jetons d’accès OAuth U2M.

Envoyer des demandes à l’application

Lorsque vous appelez les points de terminaison d’API de votre application, incluez le jeton du porteur dans l’en-tête d’autorisation et remplacez <your-endpoint> par le chemin d’accès d’API réel de votre application :

CURL

curl "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>" \
     -H "Authorization: Bearer <YOUR_TOKEN>"

Python avec des requêtes

import requests

response = requests.get(
    "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
    headers={"Authorization": f"Bearer {token}"}
)

Python avec le Kit de développement logiciel (SDK)

from databricks.sdk import WorkspaceClient
import requests

wc = WorkspaceClient()
headers = wc.config.authenticate()

response = requests.get(
    "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
    headers=headers
)

Considérations relatives à la sécurité

Lorsque vous vous connectez à des applications à partir de votre environnement local, suivez les bonnes pratiques de sécurité suivantes :

  • Ne codez jamais en dur les jetons d’accès dans votre code source. Utilisez des variables d’environnement ou des dépôts d'identifiants sécurisés.
  • Actualisez régulièrement les jetons pour réduire les risques de sécurité s’ils sont compromis.
  • Évitez de journaliser les jetons d’accès ou les données sensibles dans les journaux de votre application.

Résolution des problèmes

Si vous rencontrez des problèmes lors de la connexion à votre application à partir d’un ordinateur local, essayez ces solutions.

Échecs d’authentification (erreurs 401)

Vérifiez les éléments suivants :

  • Votre jeton est valide (exécuter databricks auth token --profile my-env)
  • Votre profil est correctement configuré avec databricks auth login
  • Le jeton n’a pas expiré
  • Votre jeton inclut les étendues OAuth requises. Les outils CLI et SDK fournissent uniquement des étendues de base telles que all-apis, qui peuvent ne pas suffire pour l'autorisation utilisateur.

Autorisation refusée (erreurs 403)

Vérifiez les éléments suivants :

  • Vous disposez CAN USE des droits sur cette application
  • Votre jeton inclut les étendues OAuth requises. Les étendues insuffisantes peuvent entraîner des erreurs 403 même avec des autorisations valides.

Application introuvable (erreurs 404)

Vérifiez les éléments suivants :

  • L’ID et l’URL de l’espace de travail sont correctes
  • L’application est déployée et en cours d’exécution
  • Le chemin d’accès au point de terminaison existe dans l’application

Problèmes de connectivité réseau

Vérifiez les éléments suivants :

  • Votre réseau autorise les connexions HTTPS sortantes
  • Le *.databricksapps.com domaine est accessible à partir de votre réseau

En outre, vérifiez si votre organisation utilise un proxy nécessitant une configuration.

Ressources supplémentaires

Pour plus d’informations, consultez les ressources suivantes :