Abrufen von Microsoft Entra ID-Token (früher Azure Active Directory) für Benutzer mithilfe von MSAL

Wichtig

In diesem Artikel wird beschrieben, wie Sie mithilfe der Microsoft Authentifizierungsbibliothek (Microsoft Authentication Library, MSAL) Microsoft Entra ID-Token (früher Azure Active Directory) manuell erstellen.

Databricks empfiehlt nicht, Microsoft Entra ID-Token (ehemals Azure Active Directory) für Azure Databricks-Benutzer manuell zu erstellen. Der Grund dafür ist, dass jedes Microsoft Entra ID-Token kurzlebig ist und normalerweise innerhalb einer Stunde abläuft. Nach diesem Zeitpunkt müssen Sie manuell ein Microsoft Entra ID-Ersatztoken generieren. Verwenden Sie stattdessen eines der teilnehmenden Tools oder SDKs, die den Databricks-Clientstandard für die einheitliche Authentifizierung implementieren. Diese Tools und SDKs generieren und ersetzen automatisch abgelaufene Microsoft Entra ID-Token für Sie, wobei die Azure CLI-Authentifizierung genutzt wird.

Verwaltete Dienstprinzipale von Azure Databricks werden direkt in Azure Databricks verwaltet. Verwaltete Dienstprinzipale der Microsoft Entra ID werden in der Microsoft Entra ID verwaltet, die zusätzliche Berechtigungen erfordert. Databricks empfiehlt für die meisten Anwendungsfälle durch Azure Databricks verwaltete Dienstprinzipale zu verwenden. Databricks empfiehlt jedoch auch, verwaltete Dienstprinzipale von Microsoft Entra ID in Fällen zu verwenden, in denen Sie sich bei Azure Databricks und anderen Azure-Ressourcen gleichzeitig authentifizieren müssen.

Informationen zum Erstellen eines verwalteten Dienstprinzipals von Azure Databricks anstelle eines verwalteten Dienstprinzipals von Microsoft Entra ID finden Sie unter Verwalten von Dienstprinzipalen.

Sie können die Microsoft-Authentifizierungsbibliothek (Microsoft Authentication Library, MSAL) verwenden, um Microsoft Entra ID-Zugriffstoken programmgesteuert abzurufen. In diesem Artikel werden die grundlegende Verwendung der MSAL-Bibliothek sowie die erforderlichen Benutzereingaben mit Python-Beispielen beschrieben.

Hinweis

MSAL ersetzt die Microsoft Entra ID-Authentifizierungsbibliothek (ADAL). Microsoft beendet Support und Entwicklung für die ADAL, einschließlich Sicherheitskorrekturen, am 30. Juni 2022. Weitere Informationen finden Sie unter Migrieren von Anwendungen zur Microsoft Authentication Library (MSAL).

Tipp

Möglicherweise möchten Sie die Azure CLI anstelle der MSAL verwenden, um Microsoft Entra ID-Token für Benutzer abzurufen, da die Verwendung der Azure CLI weniger Schritte erfordert. Weitere Informationen finden Sie unter Abrufen von Microsoft Entra-ID-Token (früher Azure Active Directory) für Benutzer mithilfe der Azure CLI.

Sie können auch einen Dienstprinzipal in Microsoft Entra ID definieren und das Microsoft Entra ID-Zugriffstoken nicht für einen Benutzer, sondern für den Dienstprinzipal abrufen. Siehe Abrufen von Token von Microsoft Entra ID (früher Azure Active Directory) für Dienstprinzipale.

Konfigurieren einer App im Azure-Portal

Registrieren Sie eine Anwendung im Azure-Portal für den Microsoft Entra ID-Endpunkt. Alternativ können Sie eine bereits registrierte Microsoft Entra ID-App verwenden. Weitere Informationen finden Sie unter Registrieren einer App über das Azure-Portal.

  1. Melden Sie sich beim Azure-Portal an.

    Hinweis

    Welches Portal Sie verwenden müssen, hängt davon ab, ob Ihre Microsoft Entra ID-Anwendung in der öffentlichen Cloud von Azure oder in einer nationalen oder Sovereign Cloud ausgeführt wird. Weitere Informationen finden Sie unter Nationale Clouds.

  2. Wenn Sie Zugriff auf mehrere Mandanten, Abonnements oder Verzeichnisse haben, klicken Sie im oberen Menü auf das Symbol Verzeichnisse und Abonnements (Verzeichnis mit Filter), um zu dem Verzeichnis zu wechseln, in dem Sie die Anwendung registrieren möchten.

  3. Suchen Sie nach Microsoft Entra ID und wählen Sie sie aus.

  4. Wählen Sie unter Verwalten die Optionen App-Registrierungen > Neue Registrierung aus.

  5. Geben Sie für Name einen Namen für die Anwendung ein.

  6. Wählen Sie im Abschnitt Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis (einzelner Mandant) aus.

  7. Wählen Sie im Abschnitt Umleitungs-URI (optional) für Plattform auswählen die Option Öffentlicher Client/nativ (Mobilgerät und Desktop) aus, und geben Sie einen Umleitungs-URI ein. Im folgenden Beispiel lautet der Wert für den Umleitungs-URI http://localhost.

    Register app

  8. Klicken Sie auf Registrieren.

  9. Kopieren Sie auf der Seite Übersicht der Anwendungsseite im Abschnitt Zusammenfassung die folgenden Werte:

    • Anwendungs-ID (Client)
    • Verzeichnis-ID (Mandant)
    • Unter Umleitungs-URIs den Umleitungs-URI des öffentlichen Clients, den Sie zuvor eingegeben haben.

    Azure registered app overview

  10. Fügen Sie AzureDatabricks zu den erforderlichen Berechtigungen der registrierten Anwendung hinzu. Sie müssen Administratorbenutzer*in sein, um diesen Schritt auszuführen. Wenn beim Ausführen dieser Aktion ein Berechtigungsproblem auftritt, wenden Sie sich an Ihre*n Administrator*in.

    1. Klicken Sie auf der Seite Übersicht der Anwendungsseite auf der Registerkarte Erste Schritte auf API-Berechtigungen anzeigen.

      Azure registered app settings

    2. Klicken Sie auf Berechtigung hinzufügen.

      Add required permissions to app

    3. Wählen Sie im Bereich API-Berechtigungen anfordern die Registerkarte Von meiner Organisation verwendete APIs aus, suchen Sie nach AzureDatabricks, und wählen Sie diese Option aus.

      Add AzureDatabricks API permission

    4. Aktivieren Sie das Kontrollkästchen user_impersonation, und klicken Sie dann auf Berechtigungen hinzufügen.

      Azure app delegated permissions

    5. Klicken Sie auf Administratorzustimmung für ### erteilen und dann auf Ja. Für diese Aktion müssen Sie Administratorbenutzer*in oder berechtigt sein, die Zustimmung für die Anwendung zu erteilen. Wenn Administratorzustimmung für ### erteilen nicht angezeigt wird oder Sie diese Aktion überspringen, müssen Sie bei der erstmaligen Verwendung der Anwendung den Autorisierungscodeflow (interaktiv) verwenden, um Ihre Einwilligung zu erteilen. Anschließend können Sie den Benutzername/Kennwort-Flow (programmgesteuert) als Methode nutzen.

      Add additional users and groups to app permissions

Sie können der Anwendung weitere Benutzer*innen hinzufügen. Weitere Informationen finden Sie unter Zuweisen eines Benutzerkontos zu einer Unternehmensanwendung (Anweisungen für das Azure-Portal) oder Zuweisen von Benutzern und Gruppen zu einer Anwendung in Microsoft Entra ID (ehemals Azure Active Directory) (Anweisungen für PowerShell). Ohne die erforderlichen Berechtigungen können Benutzer*innen kein Token abrufen.

Erhalten eines Microsoft Entra ID-Zugriffstokens

Um ein Microsoft Entra ID-Zugriffstoken zu erhalten, können Sie eine der folgenden Methoden verwenden:

Das Microsoft Entra ID-Token muss über den Autorisierungscodeflow (interaktiv) abgerufen werden, wenn folgende Bedingungen erfüllt sind:

  • In Microsoft Entra ID ist die zweistufige Authentifizierung aktiviert.
  • In Microsoft Entra ID ist die Verbundauthentifizierung aktiviert.
  • Während der Anwendungsregistrierung wird Ihnen keine Einwilligung für die registrierte Anwendung erteilt.

Wenn Sie über die Berechtigung verfügen, sich mit einem Benutzernamen und einem Kennwort anzumelden, können Sie den Benutzername/Kennwort-Flow (programmgesteuert) verwenden, um ein Microsoft Entra ID-Zugriffstoken abzurufen.

Autorisierungscodeflow (interaktiv)

Der Autorisierungscodeflow zum Abrufen eines Microsoft Entra ID-Zugriffstokens umfasst zwei Schritte.

  1. Fordern Sie einen Autorisierungscode an. Dabei wird ein Browserfenster geöffnet, in dem Sie zur Azure-Benutzeranmeldung aufgefordert werden. Nach der erfolgreichen Benutzeranmeldung wird der Autorisierungscode zurückgegeben.
  2. Verwenden Sie den Autorisierungscode, um das Microsoft Entra ID-Zugriffstoken zu erhalten. Je nach gewählter Vorgehensweise wird möglicherweise gleichzeitig ein Aktualisierungstoken zurückgegeben, mit dem das Microsoft Entra ID-Zugriffstoken aktualisiert werden kann.

Zum Ausführen dieser beiden Schritte können Sie Ihren Webbrowser und curl verwenden. Dabei rufen Sie den Autorisierungscode über Ihren Webbrowser ab und verwenden diesen Code und curl anschließend, um das Microsoft Entra ID-Zugriffstoken abzurufen. Bei dieser Vorgehensweise wird kein Aktualisierungstoken bereitgestellt.

Eine weitere Möglichkeit ist die Verwendung der MSAL-Python-Bibliothek. Dabei führen Sie ein einzelnes Skript aus, das den Autorisierungscode über Ihren Webbrowser abruft. Anschließend wird dieser Autorisierungscode verwendet, um sowohl ein Zugriffs- als auch ein Aktualisierungstoken abzurufen.

Bei beiden Ansätzen wird davon ausgegangen, dass Sie bereits bei Azure angemeldet sind. Wenn Sie nicht angemeldet sind, werden Sie in Ihrem Webbrowser dazu aufgefordert.

Abrufen von Microsoft Entra ID-Token unter Verwendung eines Webbrowsers und curl

  1. Sammeln Sie die folgenden Informationen:

    Parameter BESCHREIBUNG
    Mandanten-ID Die Verzeichnis-ID (Mandant) für die zugehörige Anwendung, die in Microsoft Entra ID unter Konfigurieren einer App im Azure-Portal registriert wurde.
    Client ID Die Anwendungs-ID (Client) für die zugehörige in Microsoft Entra ID registrierte Anwendung.
    Umleitungs-URI Die entsprechenden Umleitungs-URIs für die zugehörige Anwendung, die in Microsoft Entra ID registriert wurde (z. B. http://localhost). Die Authentifizierungsantworten werden mit dem Autorisierungscode an diesen URI gesendet.
  2. Rufen Sie den Autorisierungscode über Ihren Webbrowser ab, indem Sie zur folgenden URL navigieren. Ersetzen Sie die Felder im folgenden URL-Beispiel entsprechend. Beachten Sie, dass die URL als einzelne Zeile gesendet werden muss. Die Zeilenumbrüche in der folgenden URL wurden lediglich für eine verbesserte Lesbarkeit hinzugefügt. Weitere Informationen finden Sie unter Anfordern eines Autorisierungscodes.

    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>
    

    Ersetzen Sie:

    • <tenant-id> durch die Mandanten-ID der registrierten Anwendung.
    • <client-id> durch die Client-ID der registrierten Anwendung.
    • <redirect-uri> durch den Umleitungs-URI der registrierten Anwendung. Dieser URI muss im URL-codierten Format (als Prozentwert codiert) vorliegen. http://localhost ist z. B. http%3A%2F%2Flocalhost.
    • <state> durch eine Zufallszahl oder codierte Informationen. Die Integrität des Informationsaustauschs lässt sich überprüfen, indem sichergestellt wird, dass dieser Zustandswert mit dem Wert übereinstimmt, der später in diesem Verfahren in der zurückgegebenen URL enthalten ist.

    Der Wert des scope-Parameters darf nicht geändert werden. Er entspricht der programmgesteuerten ID für Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) sowie dem Standardbereich (/.default, URL-codiert %2f.default).

    Beispiel:

    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. Fügen Sie die URL als einzelne Zeile in Ihren Webbrowser ein, und melden Sie sich bei Aufforderung bei Azure an.

    HTTP request URL

  4. Der Autorisierungscode befindet sich in der zurückgegebenen URL im Feld code. Speichern Sie den Autorisierungscode an einem sicheren Speicherort. Überprüfen Sie außerdem, ob der Wert des Felds state mit dem Wert übereinstimmt, den Sie zuvor in diesem Verfahren angegeben haben.

    Authorization code URL

    Die vollständige zurückgegebene URL sieht in etwa wie folgt aus (beachten Sie, dass der vollständige Wert des Felds code auf 0.ASkAIj...RxgFhSAA gekürzt wurde, um die Übersichtlichkeit zu erhöhen):

    http://localhost/?code=0.ASkAIj...RxgFhSAA&state=12345&session_state=c44574d5-38ba-4f93-b2a3-a830db8e8cdf
    
  5. Verwenden Sie den Autorisierungscode zusammen mit curl, um das Microsoft Entra ID-Zugriffstoken zu erhalten.

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

    Ersetzen Sie:

    • <tenant-id> durch die Mandanten-ID der registrierten Anwendung.
    • <client-id> durch die Client-ID der registrierten Anwendung.
    • <authorization-code> durch Ihren Autorisierungscode.
    • <redirect-uri> durch den Umleitungs-URI der registrierten Anwendung. Dieser URI muss im URL-codierten Format (als Prozentwert codiert) vorliegen. http://localhost ist z. B. http%3A%2F%2Flocalhost.
    • <state> durch eine Zufallszahl oder codierte Informationen. Die Integrität des Informationsaustauschs lässt sich überprüfen, indem sichergestellt wird, dass dieser Zustandswert mit dem Wert übereinstimmt, der später in diesem Verfahren in der Antwortnutzlast enthalten ist.

    Der Wert des scope-Parameters darf nicht geändert werden. Er entspricht der programmgesteuerten ID für Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) sowie dem Standardbereich (/.default, URL-codiert %2f.default).

    Beispiel:

    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'
    

    Das Microsoft Entra ID-Token befindet sich im access_token-Wert innerhalb des Ergebnisses des Aufrufs. Überprüfen Sie, ob der Wert state mit dem Wert übereinstimmt, den Sie zuvor in diesem Verfahren angegeben haben.

Abrufen von Microsoft Entra ID-Token unter Verwendung der MSAL-Python-Bibliothek

  1. Sammeln Sie die folgenden Informationen:

    Parameter BESCHREIBUNG
    Mandanten-ID Die Verzeichnis-ID (Mandant) für die zugehörige Anwendung, die in Microsoft Entra ID unter Konfigurieren einer App im Azure-Portal registriert wurde.
    Client ID Die Anwendungs-ID (Client) für die zugehörige in Microsoft Entra ID registrierte Anwendung.

    Bei diesem Verfahren wird davon ausgegangen, dass Sie http://localhost als Umleitungs-URI für die in Microsoft Entra ID registrierte zugehörige Anwendung festgelegt haben.

  2. Installieren Sie das MSAL Python SDK auf Ihrem lokalen Computer, indem Sie pip install msal ausführen.

  3. Speichern Sie den folgenden Code als get-tokens.py auf Ihrem lokalen Computer.

    # 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. Führen Sie eines der folgenden Verfahren aus:

    • Ersetzen Sie im vorstehenden Code <client-id> durch die Client-ID der registrierten Anwendung und <tenant-id> durch die Mandanten-ID der registrierten Anwendung. Führen Sie anschließend das Skript aus, z. B. python get-tokens.py.
    • Geben Sie die Client-ID und die Mandanten-ID der registrierten Anwendung an, wenn Sie das Skript ausführen (z. B. python get-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de).
  5. Melden Sie sich bei Azure an, wenn Sie in Ihrem Webbrowser dazu aufgefordert werden.

  6. Die Microsoft Entra ID-Zugriffs- und Aktualisierungstoken werden in der Ausgabe ausgegeben.

Benutzername/Kennwort-Flow (programmgesteuert)

  1. Wenn Sie berechtigt sind, sich mit einem Benutzernamen und einem Kennwort anzumelden, tragen Sie die folgenden Informationen zusammen:

    Parameter BESCHREIBUNG
    Mandanten-ID Die Verzeichnis-ID (Mandant) für die zugehörige Anwendung, die in Microsoft Entra ID unter Konfigurieren einer App im Azure-Portal registriert wurde.
    Client ID Die Anwendungs-ID (Client) für die zugehörige in Microsoft Entra ID registrierte Anwendung.
    Benutzername und Kennwort Der Benutzername (die für die Anmeldung beim Azure-Portal verwendete E-Mail-Adresse) und das Kennwort des Benutzers bzw. der Benutzerin im Mandanten.

    Bei diesem Verfahren wird davon ausgegangen, dass Sie http://localhost als Umleitungs-URI für die in Microsoft Entra ID registrierte zugehörige Anwendung festgelegt haben.

  2. Installieren Sie das MSAL Python SDK auf Ihrem lokalen Computer, indem Sie pip install msal ausführen.

  3. Speichern Sie den folgenden Code als get-tokens-for-user.py auf Ihrem lokalen Computer.

    # 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. Führen Sie eines der folgenden Verfahren aus:

    • Ersetzen Sie im vorstehenden Code <client-id> durch die Client-ID der registrierten Anwendung, <tenant-id> durch die Mandanten-ID der registrierten Anwendung, <username> durch den Benutzernamen und <password> durch das Kennwort. Führen Sie anschließend das Skript aus, z. B. python get-tokens-for-user.py.
    • Geben Sie die Client-ID und die Mandanten-ID der registrierten Anwendung, den Benutzernamen und das Kennwort an, wenn Sie das Skript ausführen (z. B. python get-tokens-for-user.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de someone@example.com "MyPa55w&rd!"). Wenn ein Befehlszeilenargument Sonderzeichen enthält, sollten Sie es in Anführungszeichen setzen.
  5. Die Microsoft Entra ID-Zugriffs- und Aktualisierungstoken werden in Ihrem Terminal ausgegeben.

Verwenden eines Microsoft Entra ID-Zugriffstokens für den Zugriff auf die REST-API von Databricks

In diesem Abschnitt wird beschrieben, wie Sie ein Microsoft Entra ID-Zugriffstoken verwenden, um die Databricks-REST-API aufzurufen. Ersetzen Sie in den folgenden Beispielen <access-token> durch das Microsoft Entra ID-Zugriffstoken und <databricks-instance> durch die arbeitsbereichsspezifische URL Ihrer Azure Databricks-Bereitstellung.

Beispiel für Python

In diesem Beispiel wird gezeigt, wie die Cluster in einem Azure Databricks-Arbeitsbereich aufgeführt werden.

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

Hinweis

Wenn Sie kein*e Administratorbenutzer*in sind und sich als Administratorbenutzer*in anmelden möchten, müssen Sie zusätzlich zum 'Authorization' : 'Bearer '-Header den X-Databricks-Azure-Workspace-Resource-Id-Header angeben. Außerdem müssen Sie über die Rolle „Mitwirkender“ oder „Besitzer“ für die Arbeitsbereichsressource in Azure verfügen. Der X-Databricks-Azure-Workspace-Resource-Id-Wert wird wie folgt erstellt:

# ...

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
  }

# ...

Einzelheiten zum Abrufen der Abonnement-, Ressourcen- und Arbeitsbereichsinformationen in Azure finden Sie unter Öffnen von Ressourcen. Zum Öffnen der gewünschten Ressource können Sie in Azure nach dem Azure Databricks-Diensttyp und anderen Informationen zum gewünschten Azure Databricks-Arbeitsbereich suchen, die Sie kennen.

curl-Beispiel

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

Aktualisieren eines Microsoft Entra ID-Zugriffstokens

Wenn Sie zusammen mit Ihrem Microsoft Entra ID-Zugriffstoken ein Aktualisierungstoken erhalten, können Sie mithilfe des Aktualisierungstokens ein neues Token abrufen. Die Lebensdauer von Microsoft Entra ID-Zugriffstoken ist standardmäßig auf einen zufälligen Zeitraum zwischen 60 und 90 Minuten festgelegt (durchschnittlich 75 Minuten). Sie können die Lebensdauer von Microsoft Entra ID-Zugriffstoken mit den Methoden konfigurieren, die unter Konfigurierbare Tokengültigkeitsdauer in Microsoft Entra ID (früher Azure Active Directory) beschrieben werden.

Das folgende Beispiel zeigt, wie die MSAL-Python-Bibliothek zusammen mit einem Aktualisierungstoken verwendet wird, um ein neues Token abzurufen.

  1. Speichern Sie den folgenden Code als refresh-tokens.py auf Ihrem lokalen Computer.

    # 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. Führen Sie eines der folgenden Verfahren aus:

    • Ersetzen Sie im vorstehenden Code <client-id> durch die Client-ID der registrierten Anwendung, <tenant-id> durch die Mandanten-ID der registrierten Anwendung und <refresh-token> durch das Aktualisierungstoken. Führen Sie anschließend das Skript aus, z. B. python get-tokens-for-user.py.
    • Geben Sie die Client-ID und die Mandanten-ID der registrierten Anwendung sowie das Aktualisierungstoken an, wenn Sie das Skript ausführen (z. B. python refresh-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de "0.ASkAIj...huE84ALg"). Wenn ein Befehlszeilenargument Sonderzeichen enthält, sollten Sie es in Anführungszeichen setzen.
  3. Die neuen Microsoft Entra ID-Zugriffs- und Aktualisierungstoken werden in Ihrem Terminal ausgegeben.