Uzyskiwanie tokenów microsoft Entra ID (dawniej Azure Active Directory) dla użytkowników przy użyciu biblioteki MSAL

Ważne

W tym artykule opisano sposób ręcznego tworzenia tokenów microsoft Entra ID (dawniej Azure Active Directory) przy użyciu biblioteki Microsoft Authentication Library (MSAL).

Usługa Databricks nie zaleca ręcznego tworzenia tokenów microsoft Entra ID (dawniej Azure Active Directory) dla użytkowników usługi Azure Databricks. Dzieje się tak, ponieważ każdy token identyfikatora Entra firmy Microsoft jest krótkotrwały, zazwyczaj wygasa w ciągu jednej godziny. Po tym czasie należy ręcznie wygenerować zastępczy token identyfikatora entra firmy Microsoft. Zamiast tego należy użyć jednego z uczestniczących narzędzi lub zestawów SDK, które implementują ujednolicony standard uwierzytelniania klienta usługi Databricks. Te narzędzia i zestawy SDK automatycznie generują i zastępują wygasłe tokeny identyfikatorów Entra firmy Microsoft, korzystając z uwierzytelniania interfejsu wiersza polecenia platformy Azure.

Jednostki usługi zarządzanej usługi Azure Databricks są zarządzane bezpośrednio w usłudze Azure Databricks. Zarządzane jednostki usługi Microsoft Entra ID są zarządzane w usłudze Microsoft Entra ID, co wymaga dodatkowych uprawnień. Usługa Databricks zaleca używanie jednostek usługi zarządzanej usługi Azure Databricks w większości przypadków użycia. Jednak usługa Databricks zaleca używanie jednostek usługi zarządzanej microsoft Entra ID w przypadkach, w których należy uwierzytelnić się w usłudze Azure Databricks i innych zasobach platformy Azure w tym samym czasie.

Aby utworzyć jednostkę usługi zarządzanej usługi Azure Databricks zamiast jednostki usługi zarządzanej identyfikatora entra firmy Microsoft, zobacz Zarządzanie jednostkami usługi.

Za pomocą biblioteki Microsoft Authentication Library (MSAL) można programowo uzyskać tokeny dostępu identyfikatora Entra firmy Microsoft. W tym artykule opisano podstawowe użycie biblioteki MSAL i wymaganych danych wejściowych użytkownika z przykładami języka Python.

Uwaga

Biblioteka MSAL zastępuje bibliotekę uwierzytelniania microsoft Entra ID (ADAL). 30 czerwca 2022 r. zakończono całą pomoc techniczną i programowanie dla biblioteki ADAL, w tym poprawki zabezpieczeń. Zobacz Migrowanie aplikacji do biblioteki Microsoft Authentication Library (MSAL) .

Napiwek

Możesz spróbować użyć interfejsu wiersza polecenia platformy Azure zamiast biblioteki MSAL, aby uzyskać tokeny identyfikatora entra firmy Microsoft dla użytkowników, ponieważ użycie interfejsu wiersza polecenia platformy Azure obejmuje mniej kroków. Zobacz Get Microsoft Entra ID (dawniej Azure Active Directory) tokeny dla użytkowników przy użyciu interfejsu wiersza polecenia platformy Azure.

Możesz również zdefiniować jednostkę usługi w identyfikatorze Entra firmy Microsoft i uzyskać token dostępu Entra ID firmy Microsoft dla jednostki usługi, a nie dla użytkownika. Zobacz Get Microsoft Entra ID (dawniej Azure Active Directory) tokeny dla jednostek usługi.

Konfigurowanie aplikacji w witrynie Azure Portal

Zarejestruj aplikację w punkcie końcowym Microsoft Entra ID w witrynie Azure Portal. Alternatywnie możesz użyć aplikacji Microsoft Entra ID, która jest już zarejestrowana. Aby uzyskać więcej informacji, zobacz Rejestrowanie aplikacji przy użyciu witryny Azure Portal.

  1. Zaloguj się w witrynie Azure Portal.

    Uwaga

    Portal, który ma być używany, różni się w zależności od tego, czy aplikacja Microsoft Entra ID działa w chmurze publicznej platformy Azure, czy w chmurze krajowej lub suwerennej. Aby uzyskać więcej informacji, zobacz Chmury krajowe.

  2. Jeśli masz dostęp do wielu dzierżaw, subskrypcji lub katalogów, kliknij ikonę Katalogi i subskrypcje (katalog z filtrem), aby przełączyć się do katalogu, w którym chcesz zarejestrować aplikację.

  3. Wyszukaj i wybierz Tożsamość Microsoft Entra.

  4. W obszarze Zarządzanie wybierz pozycję Rejestracje aplikacji > Nowa rejestracja.

  5. W polu Nazwa wprowadź nazwę aplikacji.

  6. W sekcji Obsługiwane typy kont wybierz pozycję Konta w tym katalogu organizacyjnym (tylko jedna dzierżawa).

  7. W sekcji Identyfikator URI przekierowania (opcjonalnie) w polu Wybierz platformę wybierz pozycję Klient publiczny/natywny (mobilny i klasyczny) i wprowadź identyfikator URI przekierowania. W poniższym przykładzie wartość identyfikatora URI przekierowania to http://localhost.

    Zarejestruj aplikację

  8. Kliknij pozycję Zarejestruj.

  9. Na stronie Przegląd aplikacji w sekcji Podstawy skopiuj następujące wartości:

    • Identyfikator aplikacji (klienta)
    • Identyfikator katalogu (dzierżawy)
    • W obszarze Identyfikatory URI przekierowania klienta publicznego wprowadzonego wcześniej w tej procedurze.

    Omówienie zarejestrowanej aplikacji platformy Azure

  10. Dodaj usługę AzureDatabricks do wymaganych uprawnień zarejestrowanej aplikacji. Aby wykonać ten krok, musisz być administratorem. Jeśli podczas wykonywania tej akcji wystąpi problem związany z uprawnieniami, skontaktuj się z administratorem, aby uzyskać pomoc.

    1. Na stronie Przegląd aplikacji na karcie Wprowadzenie kliknij pozycję Wyświetl uprawnienia interfejsu API.

      Ustawienia zarejestrowanej aplikacji platformy Azure

    2. Kliknij pozycję Dodaj uprawnienie.

      Dodawanie wymaganych uprawnień do aplikacji

    3. W okienku Żądania uprawnień interfejsu API kliknij kartę Interfejsy API używane przez moją organizację, wyszukaj pozycję AzureDatabricks, a następnie wybierz ją.

      Dodawanie uprawnień interfejsu API usługi AzureDatabricks

    4. Włącz pole wyboru user_impersonation, a następnie kliknij pozycję Dodaj uprawnienia.

      Delegowane uprawnienia aplikacji platformy Azure

    5. Kliknij pozycję Udziel zgody administratora dla pliku ####, a następnie pozycję Tak. Aby wykonać tę akcję, musisz być użytkownikiem administratora lub mieć uprawnienia do udzielania zgody aplikacji. Jeśli nie widzisz pozycji Udziel zgody administratora dla pliku ###, lub jeśli pominiesz tę akcję, musisz użyć przepływu kodu autoryzacji (interakcyjnego) przy pierwszym użyciu aplikacji, aby wyrazić zgodę. Następnie możesz użyć metody przepływu nazwa-hasło (programowe).

      Dodawanie dodatkowych użytkowników i grup do uprawnień aplikacji

Możesz dodać kolejnych użytkowników do aplikacji. Aby uzyskać więcej informacji, zobacz Przypisywanie konta użytkownika do aplikacji dla przedsiębiorstw w celu uzyskania instrukcji w witrynie Azure Portal lub Przypisywanie użytkowników i grup do aplikacji w usłudze Microsoft Entra ID (dawniej Azure Active Directory) w celu uzyskania instrukcji programu PowerShell. Użytkownik nie będzie mógł uzyskać tokenu bez wymaganych uprawnień.

Uzyskiwanie tokenu dostępu identyfikatora entra firmy Microsoft

Aby uzyskać token dostępu microsoft Entra ID, możesz użyć jednej z następujących opcji:

Aby uzyskać token dostępu microsoft Entra ID, musisz użyć przepływu kodu autoryzacji (interakcyjnego), jeśli:

  • Uwierzytelnianie dwuskładnikowe jest włączone w identyfikatorze Entra firmy Microsoft.
  • Uwierzytelnianie federacyjne jest włączone w identyfikatorze Entra firmy Microsoft.
  • Nie udzielasz zgody na zarejestrowaną aplikację podczas rejestracji aplikacji.

Jeśli masz uprawnienia do logowania się przy użyciu nazwy użytkownika i hasła, możesz użyć przepływu username-password (programowe) w celu uzyskania tokenu dostępu identyfikatora entra firmy Microsoft.

Przepływ kodu autoryzacji (interaktywny)

Istnieją dwa kroki uzyskiwania tokenu dostępu identyfikatora Entra firmy Microsoft przy użyciu przepływu kodu autoryzacji.

  1. Zażądaj kodu autoryzacji, który uruchamia okno przeglądarki i prosi o zalogowanie użytkownika platformy Azure. Kod autoryzacji jest zwracany po pomyślnym zalogowaniu użytkownika.
  2. Użyj kodu autoryzacji, aby uzyskać token dostępu microsoft Entra ID. W zależności od używanego podejścia token odświeżania może być również zwracany w tym samym czasie i może służyć do odświeżania tokenu dostępu identyfikatora Entra firmy Microsoft.

Jednym z tych dwóch kroków jest użycie przeglądarki internetowej i narzędzia curl. W tym celu użyjesz przeglądarki internetowej, aby uzyskać kod autoryzacji, a następnie użyjesz kodu autoryzacji i curl uzyskasz token dostępu microsoft Entra ID. Takie podejście nie zapewnia tokenu odświeżania.

Innym podejściem jest użycie biblioteki MSAL w języku Python. W tym celu uruchomisz pojedynczy skrypt, który używa przeglądarki internetowej do pobrania kodu autoryzacji, a następnie użyjesz kodu autoryzacji w celu uzyskania tokenu dostępu i odświeżania.

Oba te podejścia zakładają, że użytkownik jest już zalogowany na platformie Azure. Jeśli użytkownik nie jest zalogowany, przeglądarka internetowa wyświetli monit o to.

Uzyskiwanie tokenów identyfikatora Entra firmy Microsoft przy użyciu przeglądarki internetowej i narzędzia curl

  1. Zbierz następujące informacje:

    Parametr Opis
    Identyfikator dzierżawy Identyfikator katalogu (dzierżawy) powiązanej aplikacji zarejestrowanej w usłudze Microsoft Entra ID w temacie Konfigurowanie aplikacji w witrynie Azure Portal.
    Client ID Identyfikator aplikacji (klienta) dla powiązanej aplikacji zarejestrowanej w identyfikatorze Entra firmy Microsoft.
    Adres URI przekierowania Odpowiednie identyfikatory URI przekierowania dla powiązanej aplikacji zarejestrowanej w identyfikatorze Entra firmy Microsoft (na przykład http://localhost). Odpowiedzi uwierzytelniania są wysyłane do tego identyfikatora URI z dołączonym kodem autoryzacji.
  2. Pobierz kod autoryzacji przy użyciu przeglądarki internetowej, aby przejść do następującego adresu URL. Zastąp odpowiednie pola w poniższym przykładzie adresu URL. Należy pamiętać, że adres URL musi być wysyłany jako pojedynczy wiersz; Podziały wierszy zostały dodane do następującego adresu URL w celu zapewnienia czytelności. Aby uzyskać więcej informacji, zobacz Żądanie kodu autoryzacji.

    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>
    

    Wymiana:

    • <tenant-id> z identyfikatorem dzierżawy zarejestrowanej aplikacji.
    • <client-id> z identyfikatorem klienta zarejestrowanej aplikacji.
    • <redirect-uri> przy użyciu identyfikatora URI przekierowania zarejestrowanej aplikacji. Ten identyfikator URI musi być w formacie zakodowanym w adresie URL (zakodowanym procentowo). Na przykład http://localhost to http%3A%2F%2Flocalhost.
    • <state> z losową liczbą lub pewnymi zakodowanymi informacjami. Aby ułatwić sprawdzenie integralności wymiany informacji, ta wartość stanu powinna być zgodna z tą, która znajduje się w zwracanym adresie URL w dalszej części tej procedury.

    Nie zmieniaj wartości parametru scope . Reprezentuje identyfikator programowy usługi Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) wraz z zakresem domyślnym (/.defaultzakodowanym pod adresem URL jako %2f.default).

    Na przykład:

    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. Wklej adres URL jako pojedynczy wiersz do przeglądarki internetowej i, jeśli zostanie wyświetlony monit, zaloguj się do platformy Azure.

    Adres URL żądania HTTP

  4. Kod autoryzacji znajduje się w code polu zwróconego adresu URL. Zapisz kod autoryzacji w bezpiecznej lokalizacji. Sprawdź również, czy wartość state pola jest zgodna z wartością podaną wcześniej w tej procedurze.

    Adres URL kodu autoryzacji

    Pełny zwrócony adres URL będzie wyglądać mniej więcej tak (z pełną code wartością pola skróconą tutaj 0.ASkAIj...RxgFhSAA w celu zwięzłości):

    http://localhost/?code=0.ASkAIj...RxgFhSAA&state=12345&session_state=c44574d5-38ba-4f93-b2a3-a830db8e8cdf
    
  5. Użyj kodu autoryzacji wraz z poleceniem curl , aby uzyskać token dostępu identyfikatora entra firmy Microsoft.

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

    Wymiana:

    • <tenant-id> z identyfikatorem dzierżawy zarejestrowanej aplikacji.
    • <client-id> z identyfikatorem klienta zarejestrowanej aplikacji.
    • <authorization-code> z kodem autoryzacji.
    • <redirect-uri> przy użyciu identyfikatora URI przekierowania zarejestrowanej aplikacji. Ten identyfikator URI musi być w formacie zakodowanym w adresie URL (percent-endoded). Na przykład http://localhost to http%3A%2F%2Flocalhost.
    • <state> z losową liczbą lub pewnymi zakodowanymi informacjami. Aby ułatwić sprawdzenie integralności wymiany informacji, ta wartość stanu powinna być zgodna z tą, która znajduje się w ładunku odpowiedzi w dalszej części tej procedury.

    Nie zmieniaj wartości parametru scope . Reprezentuje identyfikator programowy usługi Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) wraz z zakresem domyślnym (/.defaultzakodowanym pod adresem URL jako %2f.default).

    Na przykład:

    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'
    

    Token identyfikatora Entra firmy Microsoft znajduje się w access_token wartości w wyniku wywołania. Upewnij się, że wartość jest zgodna state z wartością podaną wcześniej w tej procedurze.

Uzyskiwanie tokenów identyfikatora entra firmy Microsoft przy użyciu biblioteki MSAL języka Python

  1. Zbierz następujące informacje:

    Parametr Opis
    Identyfikator dzierżawy Identyfikator katalogu (dzierżawy) powiązanej aplikacji zarejestrowanej w usłudze Microsoft Entra ID w temacie Konfigurowanie aplikacji w witrynie Azure Portal.
    Client ID Identyfikator aplikacji (klienta) dla powiązanej aplikacji zarejestrowanej w identyfikatorze Entra firmy Microsoft.

    W tej procedurze przyjęto założenie, że ustawiono http://localhost identyfikator URI przekierowania dla powiązanej aplikacji zarejestrowanej w identyfikatorze Entra firmy Microsoft.

  2. Zainstaluj zestaw MSAL Python SDK na komputerze lokalnym, uruchamiając polecenie pip install msal.

  3. Zapisz następujący kod, tak jak get-tokens.py na komputerze lokalnym.

    # 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. Wykonaj jedną z następujących czynności:

    • W poprzednim kodzie zastąp ciąg <client-id> identyfikatorem klienta zarejestrowanej aplikacji i <tenant-id> identyfikatorem dzierżawy zarejestrowanej aplikacji, a następnie uruchom skrypt, na przykład python get-tokens.py.
    • Podaj identyfikator klienta zarejestrowanej aplikacji i identyfikator dzierżawy zarejestrowanej aplikacji podczas uruchamiania skryptu, na przykład python get-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de.
  5. Jeśli w przeglądarce internetowej zostanie wyświetlony monit, zaloguj się do platformy Azure.

  6. Tokeny dostępu i odświeżania identyfikatora firmy Microsoft są drukowane w danych wyjściowych.

Przepływ nazwy użytkownika i hasła (programowy)

  1. Jeśli masz uprawnienia do logowania się przy użyciu nazwy użytkownika i hasła, zbierz następujące informacje:

    Parametr Opis
    Identyfikator dzierżawy Identyfikator katalogu (dzierżawy) powiązanej aplikacji zarejestrowanej w usłudze Microsoft Entra ID w temacie Konfigurowanie aplikacji w witrynie Azure Portal.
    Client ID Identyfikator aplikacji (klienta) dla rzeczywistej aplikacji zarejestrowanej w identyfikatorze Entra firmy Microsoft.
    Nazwa użytkownika i hasło Nazwa użytkownika (czyli adres e-mail podczas logowania się do witryny Azure Portal) i hasło użytkownika w dzierżawie.

    W tej procedurze przyjęto założenie, że ustawiono http://localhost identyfikator URI przekierowania dla powiązanej aplikacji zarejestrowanej w identyfikatorze Entra firmy Microsoft.

  2. Zainstaluj zestaw MSAL Python SDK na komputerze lokalnym, uruchamiając polecenie pip install msal.

  3. Zapisz następujący kod, tak jak get-tokens-for-user.py na komputerze lokalnym.

    # 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. Wykonaj jedną z następujących czynności:

    • W poprzednim kodzie zastąp ciąg <client-id> identyfikatorem klienta zarejestrowanej aplikacji, <tenant-id> identyfikatorem dzierżawy zarejestrowanej aplikacji, <username> nazwą użytkownika i <password> hasłem, a następnie uruchom skrypt, na przykład python get-tokens-for-user.py.
    • Podaj identyfikator klienta zarejestrowanej aplikacji, identyfikator dzierżawy zarejestrowanej aplikacji, nazwę użytkownika i hasło podczas uruchamiania skryptu, na przykład python get-tokens-for-user.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de someone@example.com "MyPa55w&rd!". Jeśli argument wiersza polecenia zawiera znaki specjalne, należy go otoczyć cudzysłowami.
  5. Tokeny dostępu i odświeżania identyfikatora firmy Microsoft są drukowane w terminalu.

Uzyskiwanie dostępu do interfejsu API REST usługi Databricks przy użyciu tokenu dostępu identyfikatora Entra firmy Microsoft

W tej sekcji opisano sposób wywoływania interfejsu API REST usługi Databricks przy użyciu tokenu dostępu identyfikatora entra firmy Microsoft. W poniższych przykładach zastąp ciąg <access-token> tokenem dostępu Microsoft Entra ID i <databricks-instance>adresem URL dla każdego obszaru roboczego wdrożenia usługi Azure Databricks.

Przykład języka Python

W tym przykładzie pokazano, jak wyświetlić listę klastrów w obszarze roboczym usługi 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))

Uwaga

Jeśli jesteś użytkownikiem niebędącym administratorem i chcesz zalogować się jako użytkownik administracyjny, musisz podać X-Databricks-Azure-Workspace-Resource-Id nagłówek oprócz 'Authorization' : 'Bearer ' nagłówka i musisz być w roli Współautor lub Właściciel w zasobie obszaru roboczego na platformie Azure. Skonstruujesz X-Databricks-Azure-Workspace-Resource-Id wartość w następujący sposób:

# ...

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
  }

# ...

Aby uzyskać informacje o subskrypcji, zasobie i obszarze roboczym na platformie Azure, zobacz Otwieranie zasobów. Aby otworzyć zasób docelowy, możesz wyszukać typ usługi Azure Databricks i wszelkie inne informacje na platformie Azure, które znasz na temat docelowego obszaru roboczego usługi Azure Databricks.

curl Przykład

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

Odświeżanie tokenu dostępu identyfikatora entra firmy Microsoft

Jeśli otrzymasz token odświeżania wraz z tokenem dostępu identyfikatora Entra firmy Microsoft, możesz użyć tokenu odświeżania, aby uzyskać nowy token. Domyślnie okres istnienia tokenów dostępu identyfikatora Entra firmy Microsoft jest okresem losowym z zakresu od 60 do 90 minut (średnio 75 minut). Okres istnienia tokenów dostępu identyfikatora entra firmy Microsoft można skonfigurować przy użyciu metod w temacie Konfigurowanie okresów istnienia tokenów w usłudze Microsoft Entra ID (dawniej Azure Active Directory).

W poniższym przykładzie pokazano, jak używać biblioteki MSAL Python wraz z tokenem odświeżania w celu uzyskania nowego tokenu.

  1. Zapisz następujący kod, tak jak refresh-tokens.py na komputerze lokalnym.

    # 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. Wykonaj jedną z następujących czynności:

    • W poprzednim kodzie zastąp ciąg <client-id> identyfikatorem klienta zarejestrowanej aplikacji, <tenant-id> identyfikatorem dzierżawy zarejestrowanej aplikacji i <refresh-token> tokenem odświeżania, a następnie uruchom skrypt, na przykład python get-tokens-for-user.py.
    • Podaj identyfikator klienta zarejestrowanej aplikacji, identyfikator dzierżawy zarejestrowanej aplikacji i token odświeżania podczas uruchamiania skryptu, na przykład python refresh-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de "0.ASkAIj...huE84ALg". Jeśli argument wiersza polecenia zawiera znaki specjalne, należy go ująć w cudzysłowy.
  3. Nowe tokeny dostępu i odświeżania identyfikatora firmy Microsoft są drukowane w terminalu.