Condividi tramite


Ottenere i token di Microsoft Entra ID (in precedenza Azure Active Directory) per gli utenti tramite MSAL

Importante

Questo articolo descrive come creare manualmente i token di Microsoft Entra ID (in precedenza Azure Active Directory) usando Microsoft Authentication Library (MSAL).

Databricks non consiglia di creare manualmente token di Microsoft Entra ID (in precedenza Azure Active Directory) per gli utenti di Azure Databricks. Ciò è dovuto al fatto che ogni token ID di Microsoft Entra è di breve durata, in genere scaduto entro un'ora. Dopo questa volta, è necessario generare manualmente un token ID Microsoft Entra sostitutivo. Usare invece uno degli strumenti o degli SDK partecipanti che implementano lo standard di autenticazione unificata del client Databricks. Questi strumenti e SDK generano e sostituiscono automaticamente i token ID Microsoft Entra scaduti, sfruttando l'autenticazione dell'interfaccia della riga di comando di Azure.

Le entità servizio gestite di Azure Databricks vengono gestite direttamente in Azure Databricks. Le entità servizio gestite da Microsoft Entra ID vengono gestite in Microsoft Entra ID, che richiede autorizzazioni aggiuntive. Databricks consiglia di usare le entità servizio gestite di Azure Databricks per la maggior parte dei casi d'uso. Tuttavia, Databricks consiglia di usare le entità servizio gestite con ID Microsoft Entra nei casi in cui è necessario eseguire l'autenticazione con Azure Databricks e altre risorse di Azure contemporaneamente.

Per creare un'entità servizio gestita di Azure Databricks anziché un'entità servizio gestita con ID Microsoft Entra, vedere Gestire le entità servizio.

È possibile usare Microsoft Authentication Library (MSAL) per acquisire i token di accesso di Microsoft Entra ID a livello di codice. Questo articolo descrive l'utilizzo di base della libreria MSAL e gli input utente necessari, con esempi python.

Nota

MSAL sostituisce Microsoft Entra ID Authentication Library (ADAL). Tutto il supporto e lo sviluppo Microsoft per ADAL, incluse le correzioni di sicurezza, è terminato il 30 giugno 2022. Vedere Eseguire la migrazione di applicazioni a Microsoft Authentication Library (MSAL).

Suggerimento

È possibile provare a usare l'interfaccia della riga di comando di Azure anziché MSAL per ottenere i token ID Di Microsoft Entra per gli utenti, perché l'uso dell'interfaccia della riga di comando di Azure richiede meno passaggi. Vedere Ottenere i token di Microsoft Entra ID (in precedenza Azure Active Directory) per gli utenti tramite l'interfaccia della riga di comando di Azure.

È anche possibile definire un'entità servizio in Microsoft Entra ID e ottenere un token di accesso microsoft Entra ID per l'entità servizio anziché per un utente. Vedere Ottenere i token di Microsoft Entra ID (in precedenza Azure Active Directory) per le entità servizio.

Configurare un'app in portale di Azure

Registrare un'applicazione con l'endpoint MICROSOFT Entra ID nel portale di Azure. In alternativa, è possibile usare un'app Microsoft Entra ID già registrata. Per altre informazioni, vedere Registrare un'app usando il portale di Azure.

  1. Accedere al portale di Azure.

    Nota

    Il portale da usare è diverso a seconda che l'applicazione Microsoft Entra ID venga eseguita nel cloud pubblico di Azure o in un cloud nazionale o sovrano. Per altre informazioni, vedere Cloud nazionali.

  2. Se si ha accesso a più tenant, sottoscrizioni o directory, fare clic sull'icona Directory e sottoscrizioni (directory con filtro) nel menu in alto per passare alla directory in cui si vuole registrare l'applicazione.

  3. Cerca e seleziona Microsoft Entra ID.

  4. In Gestisci selezionare Registrazioni app > Nuova registrazione.

  5. In Nome immettere un nome per l'applicazione.

  6. Nella sezione Tipi di account supportati selezionare Account solo in questa directory organizzativa (tenant singolo).

  7. Nella sezione URI di reindirizzamento (facoltativo) selezionare Client pubblico/nativo (mobile e desktop) e immettere un URI di reindirizzamento. Nell'esempio seguente il valore dell'URI di reindirizzamento è http://localhost.

    Registra l'app

  8. Fare clic su Registra.

  9. Nella pagina Panoramica della pagina dell'applicazione copiare i valori seguenti nella sezione Informazioni di base:

    • ID applicazione (client)
    • ID della directory (tenant)
    • In URI di reindirizzamento l'URI di reindirizzamento del client pubblico immesso in precedenza in questa procedura.

    Panoramica dell'app registrata in Azure

  10. Aggiungere AzureDatabricks alle autorizzazioni necessarie dell'applicazione registrata. Per eseguire questo passaggio, è necessario essere un utente amministratore. Se si verifica un problema relativo alle autorizzazioni durante l'esecuzione di questa azione, contattare l'amministratore per assistenza.

    1. Nella scheda Attività iniziali della pagina dell'applicazionefare clic su Visualizza autorizzazioni API.

      Impostazioni dell'app registrata in Azure

    2. Fare clic su Aggiungi un'autorizzazione.

      Aggiungere le autorizzazioni necessarie all'app

    3. Nel riquadro Richiedi autorizzazioni API fare clic sulla scheda API usate dall'organizzazione, cercare AzureDatabricks e quindi selezionarla.

      Aggiungere l'autorizzazione dell'API AzureDatabricks

    4. Abilitare la casella di controllo user_impersonation e quindi fare clic su Aggiungi autorizzazioni.

      Autorizzazioni delegate dell'app di Azure

    5. Fare clic su Concedi consenso amministratore per ### e quindi su . Per eseguire questa azione, è necessario essere un utente amministratore o avere il privilegio di concedere il consenso all'applicazione. Se non viene visualizzato Concedi il consenso amministratore per ###o se si ignora questa azione, è necessario usare il flusso del codice di autorizzazione (interattivo) la prima volta che si usa l'applicazione per fornire il consenso. Successivamente, è possibile usare il metodo Flusso username-password (programmatico).

      Aggiungere altri utenti e gruppi alle autorizzazioni dell'app

È possibile aggiungere altri utenti all'applicazione. Per altre informazioni, vedere Assegnare un account utente a un'applicazione aziendale per portale di Azure istruzioni o Assegnare utenti e gruppi a un'applicazione in Microsoft Entra ID (in precedenza Azure Active Directory) per le istruzioni di PowerShell. Un utente non sarà in grado di ottenere un token senza autorizzazioni necessarie.

Ottenere un token di accesso di Microsoft Entra ID

Per ottenere un token di accesso di Microsoft Entra ID, è possibile usare:

È necessario usare il flusso del codice di autorizzazione (interattivo) per ottenere il token di accesso microsoft Entra ID se:

  • L'autenticazione a due fattori è abilitata in Microsoft Entra ID.
  • L'autenticazione federata è abilitata in Microsoft Entra ID.
  • Non viene concesso il consenso all'applicazione registrata durante la registrazione dell'applicazione.

Se si dispone dell'autorità per accedere con un nome utente e una password, è possibile usare il flusso username-password (programmatico) per ottenere un token di accesso microsoft Entra ID.

Flusso del codice di autorizzazione (interattivo)

Esistono due passaggi per acquisire un token di accesso di Microsoft Entra ID usando il flusso del codice di autorizzazione.

  1. Richiedere un codice di autorizzazione, che avvia una finestra del browser e richiede l'accesso utente di Azure. Il codice di autorizzazione viene restituito dopo l'accesso dell'utente.
  2. Usare il codice di autorizzazione per acquisire il token di accesso microsoft Entra ID. A seconda dell'approccio usato, è anche possibile restituire un token di aggiornamento contemporaneamente e può essere usato per aggiornare il token di accesso microsoft Entra ID.

Un approccio per completare questi due passaggi consiste nell'usare il Web browser e curl. A tale scopo, usare il Web browser per ottenere il codice di autorizzazione e quindi usare il codice di autorizzazione e curl ottenere il token di accesso microsoft Entra ID. Questo approccio non fornisce un token di aggiornamento.

Un altro approccio consiste nell'usare la libreria PYTHON MSAL. A tale scopo, si esegue un singolo script che usa il Web browser per ottenere il codice di autorizzazione e quindi usa il codice di autorizzazione per ottenere sia un token di accesso che di aggiornamento.

Entrambi questi approcci presuppongono che l'accesso ad Azure sia già stato eseguito. Se non è stato eseguito l'accesso, il Web browser chiederà di farlo.

Ottenere i token ID di Microsoft Entra usando un Web browser e curl

  1. Raccogliere le seguenti informazioni:

    Parametro Descrizione
    ID tenant ID directory (tenant) per l'applicazione correlata registrata in Microsoft Entra ID in Configurare un'app in portale di Azure.
    ID client ID applicazione (client) per l'applicazione correlata registrata in Microsoft Entra ID.
    URI di reindirizzamento URI di reindirizzamento appropriati per l'applicazione correlata registrata in Microsoft Entra ID (ad esempio, http://localhost). Le risposte di autenticazione vengono inviate a questo URI con il codice di autorizzazione incluso.
  2. Ottenere il codice di autorizzazione usando il Web browser per passare all'URL seguente. Sostituire di conseguenza i campi nell'esempio di URL seguente. Si noti che l'URL deve essere inviato come singola riga; le interruzioni di riga sono state aggiunte all'URL seguente per migliorare la leggibilità. Per altre informazioni, vedere Richiedere un codice di autorizzazione.

    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>
    

    Replace:

    • <tenant-id> con l'ID tenant dell'applicazione registrata.
    • <client-id> con l'ID client dell'applicazione registrata.
    • <redirect-uri> con l'URI di reindirizzamento dell'applicazione registrata. Questo URI deve essere in formato con codifica URL (percent-encoded). Ad esempio, http://localhost è http%3A%2F%2Flocalhost.
    • <state> con un numero casuale o alcune informazioni codificate. Per verificare l'integrità dello scambio di informazioni, questo valore di stato deve corrispondere a quello presente nell'URL restituito più avanti in questa procedura.

    Non modificare il valore del scope parametro. Rappresenta l'ID programmatico per Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) insieme all'ambito predefinito (/.defaultcon codifica URL come %2f.default).

    Ad esempio:

    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. Incollare l'URL come singola riga nel Web browser e, se richiesto, accedere ad Azure.

    URL richiesta HTTP

  4. Il codice di autorizzazione si trova nel code campo nell'URL restituito. Salvare il codice di autorizzazione in un percorso sicuro. Verificare inoltre che il valore del state campo corrisponda a quello fornito in precedenza in questa procedura.

    URL del codice di autorizzazione

    L'URL completo restituito avrà un aspetto simile al seguente (con il valore del campo completo code abbreviato 0.ASkAIj...RxgFhSAA qui per brevità):

    http://localhost/?code=0.ASkAIj...RxgFhSAA&state=12345&session_state=c44574d5-38ba-4f93-b2a3-a830db8e8cdf
    
  5. Usare il codice di autorizzazione insieme curl a per ottenere il token di accesso 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>'
    

    Replace:

    • <tenant-id> con l'ID tenant dell'applicazione registrata.
    • <client-id> con l'ID client dell'applicazione registrata.
    • <authorization-code> con il codice di autorizzazione.
    • <redirect-uri> con l'URI di reindirizzamento dell'applicazione registrata. Questo URI deve essere in formato con codifica URL (percent-endoded). Ad esempio, http://localhost è http%3A%2F%2Flocalhost.
    • <state> con un numero casuale o alcune informazioni codificate. Per verificare l'integrità dello scambio di informazioni, questo valore di stato deve corrispondere a quello presente nel payload della risposta più avanti in questa procedura.

    Non modificare il valore del scope parametro. Rappresenta l'ID programmatico per Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) insieme all'ambito predefinito (/.defaultcon codifica URL come %2f.default).

    Ad esempio:

    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'
    

    Il token ID Microsoft Entra è nel access_token valore all'interno del risultato della chiamata. Assicurarsi di verificare che il state valore corrisponda a quello fornito in precedenza in questa procedura.

Ottenere i token ID di Microsoft Entra usando la libreria Python MSAL

  1. Raccogliere le seguenti informazioni:

    Parametro Descrizione
    ID tenant ID directory (tenant) per l'applicazione correlata registrata in Microsoft Entra ID in Configurare un'app in portale di Azure.
    ID client ID applicazione (client) per l'applicazione correlata registrata in Microsoft Entra ID.

    Questa procedura presuppone che l'utente abbia impostato http://localhost come URI di reindirizzamento per l'applicazione correlata registrata in Microsoft Entra ID.

  2. Installare MSAL Python SDK nel computer locale eseguendo pip install msal.

  3. Salvare il codice seguente come get-tokens.py nel computer locale.

    # 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. Esegui una delle operazioni seguenti:

    • Nel codice precedente sostituire <client-id> con l'ID client dell'applicazione registrata e <tenant-id> con l'ID tenant dell'applicazione registrata, quindi eseguire lo script, ad esempio python get-tokens.py.
    • Specificare l'ID client dell'applicazione registrata e l'ID tenant dell'applicazione registrata quando si esegue lo script, ad esempio python get-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de.
  5. Se il Web browser richiede l'accesso ad Azure.

  6. I token di accesso e aggiornamento di Microsoft Entra ID vengono stampati nell'output.

Flusso username-password (programmatico)

  1. Se si dispone dell'autorità per accedere con un nome utente e una password, raccogliere le informazioni seguenti:

    Parametro Descrizione
    ID tenant ID directory (tenant) per l'applicazione correlata registrata in Microsoft Entra ID in Configurare un'app in portale di Azure.
    ID client ID applicazione (client) per l'applicazione reale registrata in Microsoft Entra ID.
    Nome utente e password Il nome utente (ovvero l'indirizzo di posta elettronica quando si accede a portale di Azure) e la password dell'utente nel tenant.

    Questa procedura presuppone che l'utente abbia impostato http://localhost come URI di reindirizzamento per l'applicazione correlata registrata in Microsoft Entra ID.

  2. Installare MSAL Python SDK nel computer locale eseguendo pip install msal.

  3. Salvare il codice seguente come get-tokens-for-user.py nel computer locale.

    # 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. Esegui una delle operazioni seguenti:

    • Nel codice precedente sostituire <client-id> con l'ID client dell'applicazione registrata, <tenant-id> con l'ID tenant dell'applicazione registrata, <username> con il nome utente e <password> con la password, quindi eseguire lo script, ad esempio python get-tokens-for-user.py.
    • Specificare l'ID client dell'applicazione registrata, l'ID tenant dell'applicazione registrata, il nome utente e la password quando si esegue lo script, ad esempio python get-tokens-for-user.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de someone@example.com "MyPa55w&rd!". Se un argomento della riga di comando contiene caratteri speciali, è consigliabile racchiuderlo tra virgolette.
  5. I token di accesso e aggiornamento di Microsoft Entra ID vengono stampati nel terminale.

Usare un token di accesso di Microsoft Entra ID per accedere all'API REST di Databricks

Questa sezione descrive come usare un token di accesso di Microsoft Entra ID per chiamare l'API REST di Databricks. Negli esempi seguenti sostituire <access-token> con il token di accesso microsoft Entra ID e <databricks-instance> con l'URL per area di lavoro della distribuzione di Azure Databricks.

Esempio in Python

Questo esempio illustra come elencare i cluster in un'area di lavoro di 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))

Nota

Se si è un utente non amministratore e si vuole accedere come utente amministratore, è necessario specificare l'intestazione X-Databricks-Azure-Workspace-Resource-Id oltre all'intestazione 'Authorization' : 'Bearer ' ed essere in un ruolo Collaboratore o Proprietario nella risorsa dell'area di lavoro in Azure. Il valore viene costruito X-Databricks-Azure-Workspace-Resource-Id nel modo seguente:

# ...

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
  }

# ...

Per ottenere le informazioni su sottoscrizione, risorsa e area di lavoro in Azure, vedere Aprire le risorse. Per aprire la risorsa di destinazione, è possibile cercare il tipo di servizio Azure Databricks e tutte le altre informazioni in Azure che si conoscono sull'area di lavoro di Azure Databricks di destinazione.

curl Esempio

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

Aggiornare un token di accesso a Microsoft Entra ID

Se si ottiene un token di aggiornamento insieme al token di accesso microsoft Entra ID, è possibile usare il token di aggiornamento per ottenere un nuovo token. Per impostazione predefinita, la durata dei token di accesso a Microsoft Entra ID è un periodo di tempo casuale compreso tra 60 e 90 minuti (75 minuti in media). È possibile configurare la durata dei token di accesso di Microsoft Entra ID usando i metodi descritti in Durata dei token configurabili in Microsoft Entra ID (in precedenza Azure Active Directory).

L'esempio seguente illustra come usare la libreria Python MSAL insieme a un token di aggiornamento per ottenere un nuovo token.

  1. Salvare il codice seguente come refresh-tokens.py nel computer locale.

    # 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. Esegui una delle operazioni seguenti:

    • Nel codice precedente sostituire <client-id> con l'ID client dell'applicazione registrata, <tenant-id> con l'ID tenant dell'applicazione registrata e <refresh-token> con il token di aggiornamento, quindi eseguire lo script, ad esempio python get-tokens-for-user.py.
    • Specificare l'ID client dell'applicazione registrata, l'ID tenant dell'applicazione registrata e il token di aggiornamento quando si esegue lo script, ad esempio python refresh-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de "0.ASkAIj...huE84ALg". Se un argomento della riga di comando contiene caratteri speciali, è consigliabile racchiuderlo tra virgolette.
  3. I nuovi token di accesso e aggiornamento di Microsoft Entra ID vengono stampati nel terminale.