Microsoft Entra ID-tokens (voorheen Azure Active Directory) ophalen voor gebruikers met behulp van MSAL

Belangrijk

In dit artikel wordt beschreven hoe u handmatig Microsoft Entra ID-tokens (voorheen Azure Active Directory) maakt met behulp van de Microsoft Authentication Library (MSAL).

Databricks raadt u niet aan om handmatig Microsoft Entra ID-tokens (voorheen Azure Active Directory) te maken voor Azure Databricks-gebruikers. Dit komt doordat elk Microsoft Entra ID-token kort duurt, meestal binnen één uur verloopt. Na deze tijd moet u handmatig een vervangend Microsoft Entra ID-token genereren. Gebruik in plaats daarvan een van de deelnemende hulpprogramma's of SDK's die de geïntegreerde verificatiestandaard van de Databricks-client implementeren. Deze hulpprogramma's en SDK's genereren en vervangen automatisch verlopen Microsoft Entra ID-tokens voor u, waarbij gebruik wordt gemaakt van Azure CLI-verificatie.

Beheerde Azure Databricks-service-principals worden rechtstreeks binnen Azure Databricks beheerd. Beheerde service-principals van Microsoft Entra ID worden beheerd in Microsoft Entra-id, waarvoor aanvullende machtigingen zijn vereist. Databricks raadt u aan om beheerde service-principals van Azure Databricks te gebruiken voor de meeste gebruiksvoorbeelden. Databricks raadt u echter aan om beheerde service-principals van Microsoft Entra ID te gebruiken in gevallen waarin u zich tegelijkertijd moet verifiëren met Azure Databricks en andere Azure-resources.

Als u een door Azure Databricks beheerde service-principal wilt maken in plaats van een door Microsoft Entra ID beheerde service-principal, raadpleegt u Service-principals beheren.

U kunt de Microsoft Authentication Library (MSAL) gebruiken om microsoft Entra ID-toegangstokens programmatisch te verkrijgen. In dit artikel wordt het basisgebruik van de MSAL-bibliotheek en de vereiste gebruikersinvoer beschreven, met Python-voorbeelden.

Notitie

MSAL vervangt de Microsoft Entra ID Authentication Library (ADAL). Alle Microsoft-ondersteuning en -ontwikkeling voor ADAL, inclusief beveiligingsoplossingen, is beëindigd op 30 juni 2022. Zie Toepassingen migreren naar de Microsoft Authentication Library (MSAL).

Tip

U kunt proberen de Azure CLI te gebruiken in plaats van MSAL om Microsoft Entra ID-tokens voor gebruikers op te halen, omdat het gebruik van de Azure CLI minder stappen omvat. Zie Tokens voor Microsoft Entra-id (voorheen Azure Active Directory) ophalen voor gebruikers met behulp van de Azure CLI.

U kunt ook een service-principal definiëren in Microsoft Entra ID en een Microsoft Entra ID-toegangstoken voor de service-principal ophalen in plaats van voor een gebruiker. Zie Tokens voor Microsoft Entra-id (voorheen Azure Active Directory) ophalen voor service-principals.

Een app configureren in Azure Portal

Registreer een toepassing bij het Microsoft Entra ID-eindpunt in Azure Portal. U kunt ook een Microsoft Entra ID-app gebruiken die al is geregistreerd. Zie Een app registreren met behulp van Azure Portal voor meer informatie.

  1. Meld u aan bij het Azure-portaal.

    Notitie

    De portal die moet worden gebruikt, is afhankelijk van of uw Microsoft Entra ID-toepassing wordt uitgevoerd in de openbare Azure-cloud of in een nationale of onafhankelijke cloud. Zie Nationale clouds voor meer informatie.

  2. Als u toegang hebt tot meerdere tenants, abonnementen of mappen, klikt u op het pictogram Mappen en abonnementen (directory met filter) in het bovenste menu om over te schakelen naar de map waarin u de toepassing wilt registreren.

  3. Zoek Microsoft Entra ID en selecteer deze.

  4. Selecteer in Beheren App-registraties > Nieuwe registratie.

  5. Voer bij Naam een naam in voor de toepassing.

  6. Selecteer in de sectie Ondersteunde accounttypen alleen Accounts in deze organisatiemap (één tenant).

  7. Selecteer in de sectie Omleidings-URI (optioneel) voor Een platform selecteren openbare client/systeemeigen (mobiel en desktop) en voer een omleidings-URI in. In het volgende voorbeeld is http://localhostde waarde van de omleidings-URI.

    Register app

  8. Klik op Registreren.

  9. Kopieer op de overzichtspagina van de toepassingspagina in de sectie Essentials de volgende waarden:

    • Toepassings-id (client)
    • Map-id (tenant)
    • In omleidings-URI's is de omleidings-URI van de openbare client die u eerder in deze procedure hebt ingevoerd.

    Azure registered app overview

  10. Voeg AzureDatabricks toe aan de vereiste machtigingen van de geregistreerde toepassing. U moet een beheerder zijn om deze stap uit te voeren. Als u tijdens het uitvoeren van deze actie een probleem ondervindt met machtigingen, neemt u contact op met de beheerder voor hulp.

    1. Klik op de pagina Overzicht van de toepassingspagina op het tabblad Aan de slag op API-machtigingen weergeven.

      Azure registered app settings

    2. Klik op Een machtiging toevoegen.

      Add required permissions to app

    3. Klik in het deelvenster Api-machtigingen aanvragen op de API's die door mijn organisatie worden gebruikt , zoek naar AzureDatabricks en selecteer deze.

      Add AzureDatabricks API permission

    4. Schakel het selectievakje user_impersonation in en klik vervolgens op Machtigingen toevoegen.

      Azure app delegated permissions

    5. Klik op Beheerderstoestemming verlenen voor ### en vervolgens op Ja. Als u deze actie wilt uitvoeren, moet u een beheerder zijn of de bevoegdheid hebben om toestemming te verlenen aan de toepassing. Als u Beheerderstoestemming verlenen voor ### niet ziet of als u deze actie overslaat, moet u de autorisatiecodestroom (interactief) gebruiken wanneer u de toepassing voor het eerst gebruikt om toestemming te geven. Daarna kunt u de methode Gebruikersnaam-wachtwoordstroom (programmatisch) gebruiken.

      Add additional users and groups to app permissions

U kunt extra gebruikers toevoegen aan de toepassing. Zie Een gebruikersaccount toewijzen aan een bedrijfstoepassing voor instructies voor Azure Portal of Gebruikers en groepen toewijzen aan een toepassing in Microsoft Entra ID (voorheen Azure Active Directory) voor PowerShell-instructies voor meer informatie. Een gebruiker kan geen token verkrijgen zonder vereiste machtigingen.

Een Microsoft Entra ID-toegangstoken ophalen

Als u een Microsoft Entra ID-toegangstoken wilt ophalen, kunt u het volgende gebruiken:

U moet de autorisatiecodestroom (interactief) gebruiken om het Microsoft Entra ID-toegangstoken op te halen als:

  • Tweeledige verificatie is ingeschakeld in Microsoft Entra-id.
  • Federatieve verificatie is ingeschakeld in Microsoft Entra-id.
  • U krijgt geen toestemming voor de geregistreerde toepassing tijdens de registratie van de toepassing.

Als u gemachtigd bent om u aan te melden met een gebruikersnaam en wachtwoord, kunt u de stroom gebruikersnaam-wachtwoord (programmatisch) gebruiken om een Microsoft Entra ID-toegangstoken te verkrijgen.

Autorisatiecodestroom (interactief)

Er zijn twee stappen voor het verkrijgen van een Microsoft Entra ID-toegangstoken met behulp van de autorisatiecodestroom.

  1. Vraag een autorisatiecode aan, waarmee een browservenster wordt gestart en wordt gevraagd om zich aan te melden bij Azure-gebruikers. De autorisatiecode wordt geretourneerd nadat de gebruiker zich heeft aangemeld.
  2. Gebruik de autorisatiecode om het Toegangstoken voor Microsoft Entra ID te verkrijgen. Afhankelijk van de methode die u gebruikt, kan een vernieuwingstoken ook tegelijkertijd worden geretourneerd en kan worden gebruikt om het Toegangstoken van Microsoft Entra ID te vernieuwen.

Een manier om deze twee stappen uit te voeren, is door uw webbrowser en curl te gebruiken. Hiervoor gebruikt u uw webbrowser om de autorisatiecode op te halen en gebruikt u vervolgens de autorisatiecode en curl om het Toegangstoken voor Microsoft Entra ID op te halen. Deze benadering biedt geen vernieuwingstoken.

Een andere benadering is het gebruik van de MSAL Python-bibliotheek. Hiervoor voert u één script uit dat gebruikmaakt van uw webbrowser om de autorisatiecode op te halen en vervolgens de autorisatiecode gebruikt om zowel een toegangs- als vernieuwingstoken op te halen.

Bij beide benaderingen wordt ervan uitgegaan dat u al bent aangemeld bij Azure. Als u niet bent aangemeld, wordt u in uw webbrowser gevraagd dit te doen.

Microsoft Entra ID-tokens ophalen met behulp van een webbrowser en curl

  1. Verzamel de volgende informatie:

    Parameter Description
    Tenant-id De map-id (tenant) voor de gerelateerde toepassing die is geregistreerd in Microsoft Entra-id in Een app configureren in De Azure-portal.
    Client ID De toepassings-id (client) voor de gerelateerde toepassing die is geregistreerd in Microsoft Entra-id.
    Omleidings-URI De juiste omleidings-URI's voor de gerelateerde toepassing die is geregistreerd in Microsoft Entra-id (bijvoorbeeld http://localhost). De verificatiereacties worden naar deze URI verzonden, waarbij de autorisatiecode is opgenomen.
  2. Haal de autorisatiecode op met behulp van uw webbrowser om naar de volgende URL te bladeren. Vervang de velden in het volgende URL-voorbeeld dienovereenkomstig. Houd er rekening mee dat de URL als één regel moet worden verzonden; regeleinden zijn toegevoegd aan de volgende URL voor leesbaarheid. Zie Een autorisatiecode aanvragen voor meer informatie.

    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>
    

    Vervangen:

    • <tenant-id> met de tenant-id van de geregistreerde toepassing.
    • <client-id> met de client-id van de geregistreerde toepassing.
    • <redirect-uri> met de omleidings-URI van de geregistreerde toepassing. Deze URI moet de indeling met URL-codering (procentcodering) hebben. Is bijvoorbeeld http://localhosthttp%3A%2F%2Flocalhost.
    • <state> met een willekeurig getal of een gecodeerde informatie. Om te controleren op de integriteit van gegevensuitwisseling, moet deze statuswaarde overeenkomen met de waarde die zich verderop in deze procedure in de geretourneerde URL bevindt.

    Wijzig de waarde van de scope parameter niet. Het vertegenwoordigt de programmatische id voor Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) samen met het standaardbereik (/.defaulturl-gecodeerd als %2f.default).

    Voorbeeld:

    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. Plak de URL als één regel in uw webbrowser en meld u, indien hierom wordt gevraagd, aan bij Azure.

    HTTP request URL

  4. De autorisatiecode bevindt zich in het code veld in de geretourneerde URL. Sla de autorisatiecode op een veilige locatie op. Controleer ook of de waarde van het state veld overeenkomt met de waarde die u eerder in deze procedure hebt opgegeven.

    Authorization code URL

    De volledige geretourneerde URL ziet er ongeveer als volgt uit (met de volledige code veldwaarde die hier 0.ASkAIj...RxgFhSAA is ingekort voor beknoptheid):

    http://localhost/?code=0.ASkAIj...RxgFhSAA&state=12345&session_state=c44574d5-38ba-4f93-b2a3-a830db8e8cdf
    
  5. Gebruik de autorisatiecode samen om curl het Toegangstoken voor Microsoft Entra ID op te halen.

    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>'
    

    Vervangen:

    • <tenant-id> met de tenant-id van de geregistreerde toepassing.
    • <client-id> met de client-id van de geregistreerde toepassing.
    • <authorization-code> met uw autorisatiecode.
    • <redirect-uri> met de omleidings-URI van de geregistreerde toepassing. Deze URI moet de indeling met URL-codering (procent-endoded) hebben. Is bijvoorbeeld http://localhosthttp%3A%2F%2Flocalhost.
    • <state> met een willekeurig getal of een gecodeerde informatie. Om te controleren op de integriteit van gegevensuitwisseling, moet deze statuswaarde overeenkomen met de waarde die zich verderop in deze procedure in de nettolading van het antwoord bevindt.

    Wijzig de waarde van de scope parameter niet. Het vertegenwoordigt de programmatische id voor Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) samen met het standaardbereik (/.defaulturl-gecodeerd als %2f.default).

    Voorbeeld:

    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'
    

    Het Microsoft Entra ID-token bevindt zich in de access_token waarde binnen het resultaat van de aanroep. Controleer of de state waarde overeenkomt met de waarde die u eerder in deze procedure hebt opgegeven.

Microsoft Entra ID-tokens ophalen met behulp van de MSAL Python-bibliotheek

  1. Verzamel de volgende informatie:

    Parameter Description
    Tenant-id De map-id (tenant) voor de gerelateerde toepassing die is geregistreerd in Microsoft Entra-id in Een app configureren in De Azure-portal.
    Client ID De toepassings-id (client) voor de gerelateerde toepassing die is geregistreerd in Microsoft Entra-id.

    In deze procedure wordt ervan uitgegaan dat u hebt ingesteld http://localhost als de omleidings-URI voor de gerelateerde toepassing die is geregistreerd in Microsoft Entra-id.

  2. Installeer de MSAL Python SDK op uw lokale computer door deze uit te voeren pip install msal.

  3. Sla de volgende code op uw get-tokens.py lokale computer op.

    # 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. Voer een van de volgende stappen uit:

    • Vervang in de voorgaande code door <client-id> de client-id van de geregistreerde toepassing en <tenant-id> door de tenant-id van de geregistreerde toepassing en voer vervolgens het script uit, bijvoorbeeld python get-tokens.py.
    • Geef de client-id van de geregistreerde toepassing en de tenant-id van de geregistreerde toepassing op wanneer u het script uitvoert, bijvoorbeeld python get-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de.
  5. Als u in uw webbrowser wordt gevraagd, meldt u zich aan bij Azure.

  6. De Toegangs- en vernieuwingstokens van Microsoft Entra ID worden afgedrukt in de uitvoer.

Stroom voor gebruikersnaam-wachtwoord (programmatisch)

  1. Als u gemachtigd bent om u aan te melden met een gebruikersnaam en wachtwoord, moet u de volgende informatie verzamelen:

    Parameter Description
    Tenant-id De map-id (tenant) voor de gerelateerde toepassing die is geregistreerd in Microsoft Entra-id in Een app configureren in De Azure-portal.
    Client ID De toepassings-id (client) voor de echte toepassing die is geregistreerd in Microsoft Entra-id.
    Gebruikersnaam en wachtwoord De gebruikersnaam (dat wil gezegd, het e-mailadres wanneer u zich aanmeldt bij Azure Portal) en het wachtwoord van de gebruiker in de tenant.

    In deze procedure wordt ervan uitgegaan dat u hebt ingesteld http://localhost als de omleidings-URI voor de gerelateerde toepassing die is geregistreerd in Microsoft Entra-id.

  2. Installeer de MSAL Python SDK op uw lokale computer door deze uit te voeren pip install msal.

  3. Sla de volgende code op uw get-tokens-for-user.py lokale computer op.

    # 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. Voer een van de volgende stappen uit:

    • Vervang in de voorgaande code door <client-id> de client-id van de geregistreerde toepassing, <tenant-id> door de tenant-id van de geregistreerde toepassing, <username> door de gebruikersnaam en <password> het wachtwoord, en voer vervolgens het script uit, bijvoorbeeld python get-tokens-for-user.py.
    • Geef de client-id van de geregistreerde toepassing, de tenant-id van de geregistreerde toepassing, de gebruikersnaam en het wachtwoord op wanneer u bijvoorbeeld python get-tokens-for-user.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de someone@example.com "MyPa55w&rd!"het script uitvoert. Als een opdrachtregelargument speciale tekens bevat, moet u dit tussen aanhalingstekens plaatsen.
  5. De toegangs- en vernieuwingstokens van Microsoft Entra ID worden afgedrukt naar uw terminal.

Een Microsoft Entra ID-toegangstoken gebruiken om toegang te krijgen tot de Databricks REST API

In deze sectie wordt beschreven hoe u een Microsoft Entra ID-toegangstoken gebruikt om de Databricks REST API aan te roepen. Vervang in de volgende voorbeelden <access-token> het Toegangstoken voor Microsoft Entra ID en <databricks-instance> door de URL per werkruimte van uw Azure Databricks-implementatie.

Python-voorbeeld

In dit voorbeeld ziet u hoe u de clusters in een Azure Databricks-werkruimte weergeeft.

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))

Notitie

Als u een niet-beheerder bent en u zich wilt aanmelden als beheerder, moet u de X-Databricks-Azure-Workspace-Resource-Id header opgeven naast de 'Authorization' : 'Bearer ' header en moet u de rol Inzender of Eigenaar hebben voor de werkruimteresource in Azure. U maakt de X-Databricks-Azure-Workspace-Resource-Id waarde als volgt:

# ...

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
  }

# ...

Zie Resources openen om de abonnements-, resource- en werkruimtegegevens in Azure op te halen. Als u de doelresource wilt openen, kunt u zoeken op het azure Databricks-servicetype en andere informatie in Azure die u weet over de Azure Databricks-doelwerkruimte.

curl Voorbeeld

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

Een Microsoft Entra ID-toegangstoken vernieuwen

Als u een vernieuwingstoken samen met uw Microsoft Entra ID-toegangstoken krijgt, kunt u het vernieuwingstoken gebruiken om een nieuw token te verkrijgen. De levensduur van Microsoft Entra ID-toegangstokens is standaard een willekeurige periode tussen 60 en 90 minuten (gemiddeld 75 minuten). U kunt de levensduur van Microsoft Entra ID-toegangstokens configureren met behulp van de methoden in Configureerbare tokenlevensduur in Microsoft Entra-id (voorheen Azure Active Directory).

In het volgende voorbeeld ziet u hoe u de MSAL Python-bibliotheek samen met een vernieuwingstoken gebruikt om een nieuw token te verkrijgen.

  1. Sla de volgende code op uw refresh-tokens.py lokale computer op.

    # 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. Voer een van de volgende stappen uit:

    • Vervang in de voorgaande code door <client-id> de client-id van de geregistreerde toepassing, <tenant-id> door de tenant-id van de geregistreerde toepassing en <refresh-token> door het vernieuwingstoken en voer vervolgens het script uit, bijvoorbeeld python get-tokens-for-user.py.
    • Geef de client-id van de geregistreerde toepassing, de tenant-id van de geregistreerde toepassing en het vernieuwingstoken op wanneer u het script uitvoert, bijvoorbeeld python refresh-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de "0.ASkAIj...huE84ALg". Als een opdrachtregelargument speciale tekens bevat, moet u deze tussen aanhalingstekens plaatsen.
  3. De nieuwe Microsoft Entra ID-toegangs- en vernieuwingstokens worden afgedrukt naar uw terminal.