Obtenir des jetons Microsoft Entra ID pour les utilisateurs à l’aide de MSAL

Important

Cet article explique comment créer manuellement des jetons Microsoft Entra ID à l’aide de la Bibliothèque d’authentification Microsoft (MSAL).

Databricks ne recommande pas de créer manuellement des jetons Microsoft Entra ID pour les utilisateurs Azure Databricks. C’est parce que chaque jeton Microsoft Entra ID est de courte durée et expire généralement dans l’heure. Au-delà de ce délai, vous devez générer manuellement un jeton Microsoft Entra ID de remplacement. Utilisez plutôt l’un des outils ou SDK participants qui implémentent la norme d’authentification unifiée du client Databricks. Ces outils et kits de développement logiciel (SDK) génèrent et remplacent automatiquement pour vous les jetons Microsoft Entra ID expirés, en exploitant l’authentification Azure CLI.

Les principaux de service géré Azure Databricks sont gérés directement dans Azure Databricks. Les principaux de service géré Microsoft Entra ID sont gérés dans Microsoft Entra ID, ce qui nécessite des autorisations supplémentaires. Databricks recommande d’utiliser des principaux de service géré Azure Databricks pour la plupart des cas d’usage. Toutefois, Databricks vous recommande d’utiliser des principaux de service géré Microsoft Entra ID dans les cas où vous devez vous authentifier auprès d’Azure Databricks et d’autres ressources Azure en même temps.

Pour créer un principal de service géré Azure Databricks au lieu d’un principal de service géré Microsoft Entra ID, consultez Gérer les principaux de service.

Vous pouvez utiliser la Bibliothèque d’authentification Microsoft (MSAL) pour acquérir des jetons d’accès Microsoft Entra ID par programmation. Cet article décrit l’utilisation de base de la bibliothèque MSAL et les entrées utilisateur requises, avec des exemples Python.

Remarque

La MSAL remplace la Bibliothèque d’authentification Microsoft Entra ID (ADAL). Toute la prise en charge et le développement Microsoft pour la Bibliothèque d'authentification Active Directory (ADAL), y compris les correctifs de sécurité, se terminent le 30 juin 2022. Voir Migration d’applications vers la Bibliothèque d’authentification Microsoft (MSAL).

Conseil

Vous pouvez essayer d’utiliser l’interface CLI Azure au lieu de la MSAL pour obtenir des jetons Microsoft Entra ID pour les utilisateurs, car l’utilisation de l’interface CLI Azure implique moins d’étapes. Consultez Obtenir des jetons Microsoft Entra ID pour les utilisateurs avec Azure CLI.

Vous pouvez également définir un principal de service dans Microsoft Entra ID et obtenir un jeton d’accès Microsoft Entra ID pour le principal de service plutôt que pour un utilisateur. Consultez Obtenir des jetons Microsoft Entra ID pour les principaux de service.

Configurer une application dans le portail Azure

Inscrivez une application avec le point de terminaison Microsoft Entra ID dans le Portail Azure. Vous pouvez également utiliser une application Microsoft Entra ID qui est déjà inscrite. Pour plus d’informations, consultez Inscrire une application à l’aide du portail Azure.

  1. Connectez-vous au portail Azure.

    Remarque

    Le portail à utiliser est différent selon que votre application Microsoft Entra ID s’exécute dans le cloud public Azure ou dans un cloud national ou souverain. Pour plus d’informations, voir Clouds nationaux

  2. Si vous avez accès à plusieurs locataires, abonnements ou répertoires, cliquez sur l’icône Répertoires + abonnements (répertoire avec filtre) dans le menu supérieur pour basculer vers le répertoire dans lequel vous souhaitez inscrire l’application.

  3. Recherchez et sélectionnez Microsoft Entra ID.

  4. Dans Gérer, sélectionnez Inscriptions d’applications > Nouvelle inscription.

  5. Dans Nom, entrez le nom de l’application.

  6. Dans la section Types de comptes pris en charge, sélectionnez Comptes de cet annuaire organisationnel uniquement (Locataire unique).

  7. Dans la section URI de redirection (facultatif), pour Sélectionner une plateforme, sélectionnez Client public/natif (mobile et bureau) et entrez un URI de redirection. Dans l’exemple suivant, la valeur de l’URI de redirection est http://localhost.

    Enregistrer l'application

  8. Cliquez sur S'inscrire.

  9. Dans la page Présentation de la page d’application, dans la section Essentials, copiez les valeurs suivantes :

    • ID d’application (client)
    • ID de l’annuaire (locataire)
    • Dans URI de redirection, l’URI de redirection de client public que vous avez entré précédemment dans cette procédure.

    Vue d’ensemble de l’application inscrite dans Azure

  10. Ajoutez AzureDatabricks aux autorisations requises de l’application inscrite. Pour effectuer cette étape, vous devez être un utilisateur administrateur. Si vous rencontrez un problème lié aux autorisations lors de l’exécution de cette action, contactez votre administrateur pour obtenir de l’aide.

    1. Dans la page Vue d’ensemble de la page de l’application, sous l’onglet Prise en main, cliquez sur Afficher les autorisations de l’API.

      Paramètres de l'application enregistrée Azure

    2. Cliquez sur Ajouter une autorisation.

      Ajouter les autorisations requises à l'application

    3. Dans le volet Demander des autorisations d’API, cliquez sur l’onglet API utilisées par mon organisation, recherchez AzureDatabricks et sélectionnez-le.

      Ajouter l'autorisation de l'API AzureDatabricks

    4. Cochez la case user_impersonation, puis cliquez sur Ajouter des autorisations.

      Autorisations déléguées de l'application Azure

    5. Cliquez sur Accorder un consentement d’administrateur pour ###, puis sur Oui. Pour effectuer cette action, vous devez être un utilisateur administrateur ou avoir le privilège d’accorder un consentement à l’application. Si vous ne voyez pas Accorder un consentement d’administrateur pour ###, ou si vous ignorez cette action, vous devez utiliser le flux de code d’autorisation (interactif) la première fois que vous utilisez l’application pour fournir le consentement. Après cela, vous pouvez utiliser la méthode Flux de nom d’utilisateur-mot de passe (par programmation).

      Ajouter des utilisateurs et des groupes supplémentaires aux autorisations de l'application

Vous pouvez ajouter des utilisateurs supplémentaires à l’application. Pour plus d’informations, consultez la section Affecter un compte d’utilisateur à une application d’entreprise pour obtenir des instructions pour le portail Azure, ou Affecter des utilisateurs et des groupes à une application dans Microsoft Entra ID (anciennement Azure Active Directory) pour obtenir des instructions PowerShell. Un utilisateur ne pourra pas obtenir un jeton sans les autorisations requises.

Obtenir un jeton d’accès Microsoft Entra ID

Pour obtenir un jeton d’accès Microsoft Entra ID, vous pouvez utilisez un des éléments suivants :

Vous devez utiliser le flux de code d’autorisation (interactif) pour obtenir le jeton d’accès Microsoft Entra ID si :

  • L’authentification à deux facteurs est activée dans Microsoft Entra ID.
  • L’authentification fédérée est activée dans Microsoft Entra ID.
  • Le consentement pour l’application inscrite ne vous est pas accordé pendant l’inscription de l’application.

Si vous êtes autorisé à vous connecter avec un nom d’utilisateur et un mot de passe, vous pouvez utiliser le flux de nom d’utilisateur-mot de passe (programmatique) pour obtenir un jeton d’accès Microsoft Entra ID.

Flux de code d'autorisation (interactif)

Deux étapes sont nécessaires pour acquérir un jeton d’accès Microsoft Entra ID à l’aide du flux de code d’autorisation.

  1. Demander un code d’autorisation, ce qui lance une fenêtre de navigateur et affiche une invite de connexion d’utilisateur Azure. Le code d’autorisation est retourné une fois que l’utilisateur a réussi à se connecter.
  2. Utilisez le code d’autorisation pour acquérir le jeton d’accès Microsoft Entra ID. Selon l’approche adoptée, un jeton d’actualisation peut également être retourné en même temps et peut être utilisé pour actualiser le jeton d’accès Microsoft Entra ID.

L’une des méthodes permettant d’effectuer ces deux étapes consiste à utiliser votre navigateur web et curl. Pour ce faire, utilisez votre navigateur web afin d’obtenir le code d’autorisation, puis utilisez celui-ci et curl pour obtenir le jeton d’accès Microsoft Entra ID. Cette approche ne fournit pas de jeton d’actualisation.

Une autre approche consiste à utiliser la bibliothèque Python MSAL. Pour ce faire, vous devez exécuter un script unique qui utilise votre navigateur web pour obtenir le code d’autorisation, puis utiliser le code d’autorisation pour obtenir un jeton d’accès et un jeton d’actualisation.

Ces deux approches partent du principe que vous êtes déjà connecté à Azure. Si vous n’êtes pas connecté, votre navigateur web vous invite à le faire.

Obtenir des jetons Microsoft Entra ID à l’aide d’un navigateur web et de curl

  1. Rassemblez les informations suivantes :

    Paramètre Description
    ID client L’ID de répertoire (tenant) de l’application associée enregistrée dans Microsoft Entra ID dans Configurer une application dans le Portail Azure.
    ID client L’ID d’application (client) de l’application associée enregistrée dans Microsoft Entra ID.
    URI de redirection Les URI de redirection appropriés pour l’application associée enregistrée dans Microsoft Entra ID (par exemple, http://localhost). Les réponses d’authentification sont envoyées à cet URI avec le code d’autorisation inclus.
  2. Récupérez le code d’autorisation à l’aide de votre navigateur web pour accéder à l’URL suivante. Remplacez les champs de l’exemple d’URL suivant en conséquence. Notez que l’URL doit être envoyée sous la forme d’une ligne unique ; des sauts de ligne ont été ajoutés à l’URL suivante pour des raisons de lisibilité. Pour plus d’informations, consultez Demander un code d’autorisation.

    https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize?client_id=<client-id>
    &response_type=code
    &redirect_uri=<redirect-uri>
    &response_mode=query
    &scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default
    &state=<state>
    

    Remplacez :

    • <tenant-id> par l’ID de locataire de l’application inscrite.
    • <client-id> par l’ID client de l’application inscrite.
    • <redirect-uri> par l’URI de redirection de l’application inscrite. Cet URI doit être au format encodé URL (encodé en pourcentage). Par exemple, http://localhost est http%3A%2F%2Flocalhost.
    • <state> par un nombre aléatoire ou des informations encodées. Pour vérifier l’intégrité de l’échange d’informations, cette valeur d’état doit correspondre à celle qui figure dans l’URL retournée plus loin dans cette procédure.

    Ne modifiez pas la valeur du paramètre scope. Elle représente l’ID programmatique d’Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d), ainsi que l’étendue par défaut (/.default, encodée URL sous la forme %2f.default).

    Par exemple :

    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/v2.0/authorize?client_id=12a34b56-789c-0d12-e3fa-b456789c0123
    &response_type=code
    &redirect_uri=http%3A%2F%2Flocalhost
    &response_mode=query
    &scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default
    &state=12345
    
  3. Collez l’URL sur une seule ligne dans votre navigateur web et, si vous y êtes invité, connectez-vous à Azure.

    URL de la requête HTTP

  4. Le code d’autorisation se trouve dans le champ code dans l’URL retournée. Enregistrez le code d’autorisation à un emplacement sécurisé. Vérifiez également que la valeur du champ state correspond à celle que vous avez fournie plus haut dans cette procédure.

    URL du code d'autorisation

    L’URL complète retournée ressemblera à ce qui suit (la valeur de champ code complète étant raccourcie ici en 0.ASkAIj...RxgFhSAA pour plus de concision) :

    http://localhost/?code=0.ASkAIj...RxgFhSAA&state=12345&session_state=c44574d5-38ba-4f93-b2a3-a830db8e8cdf
    
  5. Utilisez le code d’autorisation avec curl pour obtenir le jeton d’accès Microsoft Entra ID.

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token \
    -d 'client_id=<client-id>' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'code=<authorization-code>' \
    -d 'redirect_uri=<redirect-uri>' \
    -d 'grant_type=authorization_code' \
    -d 'state=<state>'
    

    Remplacez :

    • <tenant-id> par l’ID de locataire de l’application inscrite.
    • <client-id> par l’ID client de l’application inscrite.
    • <authorization-code> par votre code d’autorisation.
    • <redirect-uri> par l’URI de redirection de l’application inscrite. Cet URI doit être au format encodé URL (encodé en pourcentage). Par exemple, http://localhost est http%3A%2F%2Flocalhost.
    • <state> par un nombre aléatoire ou des informations encodées. Pour vérifier l’intégrité de l’échange d’informations, cette valeur d’état doit correspondre à celle qui figure dans la charge utile de réponse plus loin dans cette procédure.

    Ne modifiez pas la valeur du paramètre scope. Elle représente l’ID programmatique d’Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d), ainsi que l’étendue par défaut (/.default, encodée URL sous la forme %2f.default).

    Par exemple :

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/v2.0/token \
    -d 'client_id=12a34b56-789c-0d12-e3fa-b456789c0123' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'code=0.ASkAIj...RxgFhSAA' \
    -d 'redirect_uri=http%3A%2F%2Flocalhost' \
    -d 'grant_type=authorization_code' \
    -d 'state=12345'
    

    Le jeton Microsoft Entra ID se trouve dans la valeur access_token du résultat de l’appel. N’oubliez pas vérifier que la valeur state correspond à celle que vous avez fournie plus haut dans cette procédure.

Obtenir des jetons Microsoft Entra ID à l'aide de la bibliothèque MSAL Python

  1. Rassemblez les informations suivantes :

    Paramètre Description
    ID client L’ID de répertoire (tenant) de l’application associée enregistrée dans Microsoft Entra ID dans Configurer une application dans le Portail Azure.
    ID client L’ID d’application (client) de l’application associée enregistrée dans Microsoft Entra ID.

    Cette procédure suppose que vous avez défini http://localhost comme l’URI de redirection pour l’application associée enregistrée dans Microsoft Entra ID.

  2. Installez le kit SDK Python MSAL sur votre ordinateur local en exécutant pip install msal.

  3. Enregistrez le code suivant en tant que get-tokens.py sur votre ordinateur local.

    # Given the client ID and tenant ID for an app registered in Azure,
    # provide a <ms-entra-id> access token and a refresh token.
    
    # If the caller is not already signed in to Azure, the caller's
    # web browser will prompt the caller to sign in first.
    
    # pip install msal
    from msal import PublicClientApplication
    import sys
    
    # You can hard-code the registered app's client ID and tenant ID here,
    # or you can provide them as command-line arguments to this script.
    client_id = '<client-id>'
    tenant_id = '<tenant-id>'
    
    # Do not modify this variable. It represents the programmatic ID for
    # Azure Databricks along with the default scope of '/.default'.
    scopes = [ '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default' ]
    
    # Check for too few or too many command-line arguments.
    if (len(sys.argv) > 1) and (len(sys.argv) != 3):
      print("Usage: get-tokens.py <client ID> <tenant ID>")
      exit(1)
    
    # If the registered app's client ID and tenant ID are provided as
    # command-line variables, set them here.
    if len(sys.argv) > 1:
      client_id = sys.argv[1]
      tenant_id = sys.argv[2]
    
    app = PublicClientApplication(
      client_id = client_id,
      authority = "https://login.microsoftonline.com/" + tenant_id
    )
    
    acquire_tokens_result = app.acquire_token_interactive(
      scopes = scopes
    )
    
    if 'error' in acquire_tokens_result:
      print("Error: " + acquire_tokens_result['error'])
      print("Description: " + acquire_tokens_result['error_description'])
    else:
      print("Access token:\n")
      print(acquire_tokens_result['access_token'])
      print("\nRefresh token:\n")
      print(acquire_tokens_result['refresh_token'])
    
  4. Effectuez l’une des opérations suivantes :

    • Dans le code précédent, remplacez <client-id> par l’ID client de l’application inscrite et <tenant-id> par l’ID de locataire de l’application inscrite, puis exécutez le script, par exemple python get-tokens.py.
    • Fournissez l’ID client de l’application inscrite et l’ID de locataire de l’application inscrite lorsque vous exécutez le script, par exemple python get-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de.
  5. Si votre navigateur web vous y invite, connectez-vous à Azure.

  6. Les jetons d’accès et d’actualisation Microsoft Entra ID sont imprimés dans la sortie.

Flux nom d'utilisateur-mot de passe (programmatique)

  1. Si vous êtes autorisé à vous connecter avec un nom d’utilisateur et un mot de passe, rassemblez les informations suivantes :

    Paramètre Description
    ID client L’ID de répertoire (tenant) de l’application associée enregistrée dans Microsoft Entra ID dans Configurer une application dans le Portail Azure.
    ID client L’ID d’application (client) de l’application associée enregistrée dans Microsoft Entra ID.
    Nom d’utilisateur et mot de passe Nom d’utilisateur (autrement dit, l’adresse e-mail lorsque vous vous connectez au portail Azure) et mot de passe de l’utilisateur dans le locataire.

    Cette procédure suppose que vous avez défini http://localhost comme l’URI de redirection pour l’application associée enregistrée dans Microsoft Entra ID.

  2. Installez le kit SDK Python MSAL sur votre ordinateur local en exécutant pip install msal.

  3. Enregistrez le code suivant en tant que get-tokens-for-user.py sur votre ordinateur local.

    # Given the client ID and tenant ID for an app registered in Azure,
    # along with an Azure username and password,
    # provide a <ms-entra-id> access token and a refresh token.
    
    # If the caller is not already signed in to Azure, the caller's
    # web browser will prompt the caller to sign in first.
    
    # pip install msal
    from msal import PublicClientApplication
    import sys
    
    # You can hard-code the registered app's client ID and tenant ID here,
    # along with the Azure username and password,
    # or you can provide them as command-line arguments to this script.
    client_id = '<client-id>'
    tenant_id = '<tenant-id>'
    username = '<username>'
    password = '<password>'
    
    # Do not modify this variable. It represents the programmatic ID for
    # Azure Databricks along with the default scope of '/.default'.
    scope = [ '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default' ]
    
    # Check for too few or too many command-line arguments.
    if (len(sys.argv) > 1) and (len(sys.argv) != 5):
      print("Usage: get-tokens-for-user.py <client ID> <tenant ID> <username> <password>")
      exit(1)
    
    # If the registered app's client ID and tenant ID along with the
    # Azure username and password are provided as command-line variables,
    # set them here.
    if len(sys.argv) > 1:
      client_id = sys.argv[1]
      tenant_id = sys.argv[2]
      username = sys.argv[3]
      password = sys.argv[4]
    
    app = PublicClientApplication(
      client_id = client_id,
      authority = "https://login.microsoftonline.com/" + tenant_id
    )
    
    acquire_tokens_result = app.acquire_token_by_username_password(
      username = username,
      password = password,
      scopes = scope
    )
    
    if 'error' in acquire_tokens_result:
      print("Error: " + acquire_tokens_result['error'])
      print("Description: " + acquire_tokens_result['error_description'])
    else:
      print("Access token:\n")
      print(acquire_tokens_result['access_token'])
      print("\nRefresh token:\n")
      print(acquire_tokens_result['refresh_token'])
    
  4. Effectuez l’une des opérations suivantes :

    • Dans le code précédent, remplacez <client-id> par l’ID client de l’application inscrite, <tenant-id> par l’ID de locataire de l’application inscrite, <username> par le nom d’utilisateur, et <password> par le mot de passe, puis exécutez le script, par exemple python get-tokens-for-user.py.
    • Fournissez l’ID client de l’application inscrite, l’ID de locataire de l’application inscrite, le nom d’utilisateur et le mot de passe lorsque vous exécutez le script, par exemple python get-tokens-for-user.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de someone@example.com "MyPa55w&rd!". Si un argument de ligne de commande contient des caractères spéciaux, vous devez le placer entre guillemets.
  5. Les jetons d’accès et d’actualisation Microsoft Entra ID sont imprimés sur votre terminal.

Utiliser un jeton d’accès Microsoft Entra ID pour accéder à l’API REST Databricks

Cette section décrit comment utiliser un jeton d’accès Microsoft Entra ID pour appeler l’API REST Databricks. Dans les exemples suivants, remplacez <access-token> par le jeton d’accès Microsoft Entra ID et <databricks-instance> par l’URL par espace de travail de votre déploiement Azure Databricks.

Exemple Python

Cet exemple montre comment lister les clusters dans un espace de travail Azure Databricks.

import requests
import json

databricks_instance = '<databricks-instance>'
api_version = '/api/2.0'
api_command = '/clusters/list'
url = f"https://{databricks_instance}{api_version}{api_command}"
access_token = '<access-token>'

response = requests.get(
  url = url,
  headers = { 'Authorization': "Bearer " + access_token}
)

print(json.dumps(json.loads(response.text), indent = 2))

Remarque

Si vous n’êtes pas administrateur et que vous souhaitez vous connecter en tant qu’utilisateur administrateur, vous devez fournir l’en-tête X-Databricks-Azure-Workspace-Resource-Id en plus de l’en-tête 'Authorization' : 'Bearer ', et vous devez détenir le rôle Contributeur ou Propriétaire sur la ressource d’espace de travail dans Azure. Vous construisez la valeur X-Databricks-Azure-Workspace-Resource-Id comme suit :

# ...

subscription = '<azure-subscription-id>'
resource_group = '<azure-resource-group-name>'
workspace = '<databricks-workspace-name-in-azure>'

db_resource_id = '/subscriptions/%s/resourcegroups/%s/providers/microsoft.databricks/workspaces/%s' % (
  subscription,
  resource_group,
  workspace
)

# ...

  headers = {
    'Authorization': "Bearer " + access_token,
    'X-Databricks-Azure-Workspace-Resource-Id': db_resource_id
  }

# ...

Pour obtenir les informations de l’abonnement, de la ressource et de l’espace de travail dans Azure, consultez Ouvrir des ressources. Pour ouvrir la ressource cible, vous pouvez rechercher le type de service Azure Databricks et toute autre information que vous connaissez dans Azure sur l’espace de travail Azure Databricks cible.

Exemple curl

curl -X GET \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access-token>' \
https://<databricks-instance>/api/2.0/clusters/list

Actualiser un jeton d’accès Microsoft Entra ID

Si vous obtenez un jeton d’actualisation avec votre jeton d’accès Microsoft Entra ID, vous pouvez utiliser le jeton d’actualisation pour obtenir un nouveau jeton. Par défaut, la durée de vie des jetons d’accès Microsoft Entra ID est une durée aléatoire comprise entre 60 et 90 minutes (75 minutes en moyenne). Vous pouvez configurer la durée de vie des jetons d’accès Microsoft Entra ID à l’aide des méthodes décrites dans l’article Durées de vie des jetons configurables dans Microsoft Entra ID (anciennement Azure Active Directory).

L’exemple suivant montre comment utiliser la bibliothèque Python MSAL et un jeton d’actualisation pour obtenir un nouveau jeton.

  1. Enregistrez le code suivant en tant que refresh-tokens.py sur votre ordinateur local.

    # Given the client ID and tenant ID for an app registered in Azure,
    # along with a refresh token, provide a new <ms-entra-id> access token and
    # refresh token.
    
    # If the caller is not already signed in to Azure, the caller's
    # web browser will prompt the caller to sign in first.
    
    # pip install msal
    from msal import PublicClientApplication
    import sys
    
    # You can hard-code the registered app's client ID, tenant ID,
    # and refresh token here, or you can provide them as command-line
    # arguments to this script.
    client_id = '<client-id>'
    tenant_id = '<refresh-token'
    refresh_token = '<refresh-token>'
    
    # Do not modify this variable. It represents the programmatic ID for
    # Azure Databricks along with the default scope of '.default'.
    scope = [ '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default' ]
    
    # Check for too few or too many command-line arguments.
    if (len(sys.argv) > 1) and (len(sys.argv) != 4):
      print("Usage: refresh-tokens.py <client ID> <tenant ID> <refresh token>")
      exit(1)
    
    # If the registered app's client ID, tenant ID, and refresh token are
    # provided as command-line variables, set them here.
    if len(sys.argv) > 1:
      client_id = sys.argv[1]
      tenant_id = sys.argv[2]
      refresh_token = sys.argv[3]
    
    app = PublicClientApplication(
      client_id = client_id,
      authority = "https://login.microsoftonline.com/" + tenant_id
    )
    
    acquire_tokens_result = app.acquire_token_by_refresh_token(
      refresh_token = refresh_token,
      scopes = scope
    )
    
    if 'error' in acquire_tokens_result:
      print("Error: " + acquire_tokens_result['error'])
      print("Description: " + acquire_tokens_result['error_description'])
    else:
      print("\nNew access token:\n")
      print(acquire_tokens_result['access_token'])
      print("\nNew refresh token:\n")
      print(acquire_tokens_result['refresh_token'])
    
  2. Effectuez l’une des opérations suivantes :

    • Dans le code précédent, remplacez <client-id> par l’ID client de l’application inscrite, <tenant-id> par l’ID de locataire de l’application inscrite, et <refresh-token> par le jeton d’actualisation, puis exécutez le script, par exemple python get-tokens-for-user.py.
    • Fournissez l’ID client de l’application inscrite, l’ID de locataire de l’application inscrite et le jeton d’actualisation lorsque vous exécutez le script, par exemple python refresh-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de "0.ASkAIj...huE84ALg". Si un argument de ligne de commande contient des caractères spéciaux, vous devez le placer entre guillemets.
  3. Les nouveaux jetons d’accès et d’actualisation Microsoft Entra ID sont imprimés sur votre terminal.