Bagikan melalui


Mendapatkan token MICROSOFT Entra ID (sebelumnya Azure Active Directory) untuk pengguna dengan menggunakan MSAL

Penting

Artikel ini menjelaskan cara membuat token Microsoft Entra ID (sebelumnya Azure Active Directory) secara manual dengan menggunakan Microsoft Authentication Library (MSAL).

Databricks tidak menyarankan Anda membuat token Microsoft Entra ID (sebelumnya Azure Active Directory) untuk pengguna Azure Databricks secara manual. Ini karena setiap token ID Microsoft Entra berumur pendek, biasanya kedaluwarsa dalam waktu satu jam. Setelah waktu ini, Anda harus membuat token ID Microsoft Entra pengganti secara manual. Sebagai gantinya, gunakan salah satu alat atau SDK yang berpartisipasi yang menerapkan standar autentikasi terpadu klien Databricks. Alat dan SDK ini secara otomatis menghasilkan dan mengganti token ID Microsoft Entra yang kedaluwarsa untuk Anda, memanfaatkan autentikasi Azure CLI.

Perwakilan layanan terkelola Azure Databricks dikelola langsung dalam Azure Databricks. Perwakilan layanan terkelola ID Microsoft Entra dikelola di ID Microsoft Entra, yang memerlukan izin tambahan. Databricks merekomendasikan agar Anda menggunakan perwakilan layanan terkelola Azure Databricks untuk sebagian besar kasus penggunaan. Namun, Databricks merekomendasikan agar Anda menggunakan perwakilan layanan terkelola ID Microsoft Entra dalam kasus di mana Anda harus mengautentikasi dengan Azure Databricks dan sumber daya Azure lainnya secara bersamaan.

Untuk membuat perwakilan layanan terkelola Azure Databricks alih-alih perwakilan layanan terkelola ID Microsoft Entra, lihat Mengelola perwakilan layanan.

Anda dapat menggunakan Microsoft Authentication Library (MSAL) untuk memperoleh token akses ID Microsoft Entra secara terprogram. Artikel ini menjelaskan penggunaan dasar pustaka MSAL dan input pengguna yang diperlukan, dengan contoh Python.

Catatan

MSAL menggantikan Microsoft Entra ID Authentication Library (ADAL). Semua dukungan serta pengembangan Microsoft untuk ADAL, termasuk perbaikan keamanan, berakhir pada 30 Juni 2022. Lihat Memigrasikan aplikasi ke Pustaka Autentikasi Microsoft (MSAL).

Tip

Anda mungkin ingin mencoba menggunakan Azure CLI alih-alih MSAL untuk mendapatkan token ID Microsoft Entra untuk pengguna, karena menggunakan Azure CLI melibatkan lebih sedikit langkah. Lihat Mendapatkan token MICROSOFT Entra ID (sebelumnya Azure Active Directory) untuk pengguna dengan menggunakan Azure CLI.

Anda juga dapat menentukan perwakilan layanan di ID Microsoft Entra dan mendapatkan token akses ID Microsoft Entra untuk perwakilan layanan, bukan untuk pengguna. Lihat Mendapatkan token MICROSOFT Entra ID (sebelumnya Azure Active Directory) untuk perwakilan layanan.

Konfigurasikan di portal Microsoft Azure

Daftarkan aplikasi dengan titik akhir ID Microsoft Entra di portal Azure. Atau, Anda dapat menggunakan aplikasi ID Microsoft Entra yang sudah terdaftar. Untuk informasi selengkapnya, lihat Daftarkan aplikasi dengan menggunakan portal Microsoft Azure.

  1. Masuk ke portal Azure.

    Catatan

    Portal yang akan digunakan berbeda tergantung pada apakah aplikasi ID Microsoft Entra Anda berjalan di cloud publik Azure atau di cloud nasional atau berdaulat. Untuk informasi selengkapnya, lihat Cloud nasional.

  2. Jika Anda memiliki akses ke beberapa penyewa, langganan, atau direktori, klik ikon Direktori + langganan (direktori dengan filter) di menu atas untuk beralih ke direktori tempat Anda ingin mendaftarkan aplikasi.

  3. Mencari dan memilih Microsoft Entra ID.

  4. Di Kelola, pilih Pendaftaran Aplikasi >Pendaftaran baru.

  5. Untuk Nama, masukkan nama untuk aplikasi.

  6. Di bagian Jenis akun yang didukung, pilih Akun hanya dalam direktori organisasi ini (Penyewa tunggal).

  7. Di bagian Alihkan URI (opsional), untuk Pilih platform, pilih Klien publik/asli (seluler &desktop) dan masukkan URI pengalihan. Dalam contoh berikut, nilai URI pengalihan adalah http://localhost.

    Daftarkan aplikasi

  8. Klik Daftar.

  9. Pada halaman Gambaran Umum halaman aplikasi, di bagian Essentials, salin nilai-nilai berikut:

    • ID aplikasi (klien)
    • ID direktori (tenant)
    • Di Redirect URI, klien publik mengalihkan URI yang Anda masukkan sebelumnya dalam prosedur ini.

    Gambaran umum aplikasi terdaftar Azure

  10. Tambahkan AzureDatabricks ke izin yang diperlukan dari aplikasi terdaftar. Anda harus menjadi pengguna admin untuk melakukan langkah ini. Jika Anda mengalami masalah terkait izin saat melakukan tindakan ini, hubungi administrator untuk mendapatkan bantuan.

    1. Pada halaman Gambaran Umum halaman aplikasi, pada tab Mulai, klik Tampilkan izin API.

      Pengaturan aplikasi Azure yang terdaftar

    2. Klik Tambahkan izin.

      Tambahkan izin yang dibutuhkan pada aplikasi

    3. Di panel Minta izin API, klik tab API yang digunakan organisasi saya, cari AzureDatabricks, lalu pilih.

      Menambahkan izin API AzureDatabricks

    4. Aktifkan kotak centang user_impersonation, lalu klik Tambahkan izin.

      Izin aplikasi Azure yang didelegasikan

    5. Klik Berikan persetujuan admin untuk ### lalu Ya. Untuk melakukan tindakan ini, Anda harus menjadi pengguna admin atau memiliki hak istimewa untuk memberikan persetujuan atas aplikasi. Jika Anda tidak melihat Berikan persetujuan admin untuk ###, atau jika Anda melewatkan tindakan ini, Anda harus menggunakan alur kode Otorisasi (interaktif) saat pertama kali menggunakan aplikasi untuk memberikan persetujuan. Setelah itu, Anda dapat menggunakan metode Aliran nama pengguna-kata sandi (terprogram ).

      Menambahkan pengguna dan grup tambahan pada izin aplikasi

Anda dapat menambahkan pengguna tambahan ke aplikasi. Untuk informasi selengkapnya, lihat Menetapkan akun pengguna ke aplikasi perusahaan untuk instruksi portal Azure atau Menetapkan pengguna dan grup ke aplikasi di ID Microsoft Entra (sebelumnya Azure Active Directory) untuk instruksi PowerShell. Pengguna tidak akan dapat memperoleh token tanpa izin yang diperlukan.

Mendapatkan token akses ID Microsoft Entra

Untuk mendapatkan token akses ID Microsoft Entra, Anda dapat menggunakan:

Anda harus menggunakan alur kode otorisasi (interaktif) untuk mendapatkan token akses ID Microsoft Entra jika:

  • Autentikasi dua faktor diaktifkan di ID Microsoft Entra.
  • Autentikasi gabungan diaktifkan di MICROSOFT Entra ID.
  • Anda tidak diberikan persetujuan untuk aplikasi terdaftar selama pendaftaran aplikasi.

Jika Anda memiliki otoritas untuk masuk dengan nama pengguna dan kata sandi, Anda dapat menggunakan alur nama pengguna-kata sandi (terprogram) untuk mendapatkan token akses ID Microsoft Entra.

Aliran kode autorisasi (interaktif)

Ada dua langkah untuk memperoleh token akses ID Microsoft Entra menggunakan alur kode otorisasi.

  1. Minta kode otorisasi, yang meluncurkan jendela browser dan meminta login pengguna Azure. Kode autorisasi dikembalikan setelah pengguna berhasil masuk.
  2. Gunakan kode otorisasi untuk memperoleh token akses ID Microsoft Entra. Bergantung pada pendekatan yang Anda gunakan, token refresh juga dapat dikembalikan secara bersamaan dan dapat digunakan untuk menyegarkan token akses ID Microsoft Entra.

Salah satu pendekatan untuk menyelesaikan dua langkah ini adalah dengan menggunakan browser web Anda dan curl. Untuk melakukan ini, Anda menggunakan browser web untuk mendapatkan kode otorisasi, lalu Anda menggunakan kode otorisasi dan curl untuk mendapatkan token akses ID Microsoft Entra. Pendekatan ini tidak memberikan token refresh.

Pendekatan lain adalah dengan menggunakan pustaka MSAL Python. Untuk melakukan ini, Anda menjalankan satu skrip yang menggunakan browser web Anda untuk mendapatkan kode otorisasi dan kemudian menggunakan kode otorisasi untuk mendapatkan akses dan token penyegaran.

Kedua pendekatan ini mengasumsikan bahwa Anda sudah masuk ke Azure. Jika Anda tidak masuk, browser web Anda akan meminta Anda untuk melakukannya.

Mendapatkan token ID Microsoft Entra dengan menggunakan browser web dan curl

  1. Kumpulkan informasi berikut:

    Parameter Deskripsi
    ID Penyewa ID Direktori (penyewa) untuk aplikasi terkait yang terdaftar di ID Microsoft Entra di Mengonfigurasi aplikasi di portal Azure.
    ID klien ID Aplikasi (klien) untuk aplikasi terkait yang terdaftar di ID Microsoft Entra.
    URI Pengalihan URI Pengalihan yang sesuai untuk aplikasi terkait yang terdaftar di ID Microsoft Entra (misalnya, http://localhost). Tanggapan autentikasi dikirim ke URI ini dengan kode autorisasi disertakan.
  2. Dapatkan kode otorisasi dengan menggunakan browser web Anda untuk menelusuri ke URL berikut. Ganti bidang dalam contoh URL berikut yang sesuai. Perhatikan bahwa URL harus dikirim sebagai satu baris; hentian baris telah ditambahkan ke URL berikut untuk keterbacaan. Untuk informasi selengkapnya, lihat Meminta kode otorisasi.

    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>
    

    Ganti:

    • <tenant-id> dengan ID penyewa aplikasi terdaftar.
    • <client-id> dengan ID klien aplikasi terdaftar.
    • <redirect-uri> dengan URI pengalihan aplikasi terdaftar. URI ini harus dalam format YANG dikodekan URL (dikodekan persen). Misalnya, http://localhost adalah http%3A%2F%2Flocalhost.
    • <state> dengan nomor acak atau beberapa informasi yang dikodekan. Untuk membantu memeriksa integritas pertukaran informasi, nilai status ini harus sesuai dengan yang ada di URL yang dikembalikan nanti dalam prosedur ini.

    Jangan mengubah nilai scope parameter. Ini mewakili ID terprogram untuk Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) bersama dengan cakupan default (/.default, URL yang dikodekan sebagai %2f.default).

    Contohnya:

    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. Tempel url sebagai satu baris ke browser web Anda dan, jika diminta, masuk ke Azure.

    URL permintaan HTTP

  4. Kode autorisasi ada di code bidang di URL yang ditampilkan. Simpan kode autorisasi di lokasi yang aman. Juga, periksa untuk memastikan bahwa nilai state bidang sesuai dengan yang Anda berikan sebelumnya dalam prosedur ini.

    URL kode otorisasi

    URL yang dikembalikan penuh akan terlihat seperti ini (dengan nilai bidang penuh code disingkat menjadi 0.ASkAIj...RxgFhSAA di sini untuk singkatnya):

    http://localhost/?code=0.ASkAIj...RxgFhSAA&state=12345&session_state=c44574d5-38ba-4f93-b2a3-a830db8e8cdf
    
  5. Gunakan kode otorisasi bersama dengan curl untuk mendapatkan token akses ID Microsoft Entra.

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

    Ganti:

    • <tenant-id> dengan ID penyewa aplikasi terdaftar.
    • <client-id> dengan ID klien aplikasi terdaftar.
    • <authorization-code> dengan kode otorisasi Anda.
    • <redirect-uri> dengan URI pengalihan aplikasi terdaftar. URI ini harus dalam format YANG dikodekan URL (dikodekan persen). Misalnya, http://localhost adalah http%3A%2F%2Flocalhost.
    • <state> dengan nomor acak atau beberapa informasi yang dikodekan. Untuk membantu memeriksa integritas pertukaran informasi, nilai status ini harus cocok dengan nilai yang ada di payload respons nanti dalam prosedur ini.

    Jangan mengubah nilai scope parameter. Ini mewakili ID terprogram untuk Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) bersama dengan cakupan default (/.default, URL yang dikodekan sebagai %2f.default).

    Contohnya:

    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 ID Microsoft Entra berada dalam nilai dalam access_token hasil panggilan. Pastikan untuk memeriksa apakah nilainya state cocok dengan yang Anda berikan sebelumnya dalam prosedur ini.

Mendapatkan token ID Microsoft Entra dengan menggunakan pustaka MSAL Python

  1. Kumpulkan informasi berikut:

    Parameter Deskripsi
    ID Penyewa ID Direktori (penyewa) untuk aplikasi terkait yang terdaftar di ID Microsoft Entra di Mengonfigurasi aplikasi di portal Azure.
    ID klien ID Aplikasi (klien) untuk aplikasi terkait yang terdaftar di ID Microsoft Entra.

    Prosedur ini mengasumsikan bahwa Anda telah ditetapkan http://localhost sebagai URI Pengalihan untuk aplikasi terkait yang terdaftar di ID Microsoft Entra.

  2. Instal MSAL Python SDK di mesin lokal Anda dengan menjalankan pip install msal.

  3. Simpan kode berikut seperti get-tokens.py pada mesin lokal Anda.

    # 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. Lakukan salah satu hal berikut ini:

    • Dalam kode sebelumnya, ganti <client-id> dengan ID klien aplikasi terdaftar dan <tenant-id> dengan ID penyewa aplikasi terdaftar, lalu jalankan skrip, misalnya python get-tokens.py.
    • Berikan ID klien aplikasi terdaftar dan ID penyewa aplikasi terdaftar saat Anda menjalankan skrip, misalnya python get-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de.
  5. Jika browser web Anda meminta Anda, masuk ke Azure.

  6. Akses ID Microsoft Entra dan token refresh dicetak dalam output.

Aliran nama pengguna-kata sandi (terprogram)

  1. Jika Anda memiliki wewenang untuk masuk dengan nama pengguna dan kata sandi, kumpulkan informasi berikut:

    Parameter Deskripsi
    ID Penyewa ID Direktori (penyewa) untuk aplikasi terkait yang terdaftar di ID Microsoft Entra di Mengonfigurasi aplikasi di portal Azure.
    ID klien ID Aplikasi (klien) untuk aplikasi yang direalkan yang terdaftar di ID Microsoft Entra.
    Nama pengguna dan kata sandi Nama pengguna (yaitu, alamat email saat Anda masuk ke portal Microsoft Azure) dan kata sandi pengguna di penyewa.

    Prosedur ini mengasumsikan bahwa Anda telah ditetapkan http://localhost sebagai URI Pengalihan untuk aplikasi terkait yang terdaftar di ID Microsoft Entra.

  2. Instal MSAL Python SDK di mesin lokal Anda dengan menjalankan pip install msal.

  3. Simpan kode berikut seperti get-tokens-for-user.py pada mesin lokal Anda.

    # 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. Lakukan salah satu hal berikut ini:

    • Pada kode sebelumnya, ganti <client-id> dengan ID klien aplikasi yang terdaftar, <tenant-id> dengan ID penyewa aplikasi yang terdaftar, <username> dengan nama pengguna, dan <password> dengan kata sandi, lalu jalankan skrip, misalnya python get-tokens-for-user.py.
    • Berikan ID klien aplikasi yang terdaftar, ID penyewa aplikasi yang terdaftar, nama pengguna, dan kata sandi saat Anda menjalankan skrip, misalnya python get-tokens-for-user.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de someone@example.com "MyPa55w&rd!". Jika argumen baris perintah berisi karakter khusus, Anda harus mengelilinginya dengan tanda kutip.
  5. Akses ID Microsoft Entra dan token refresh dicetak ke terminal Anda.

Menggunakan token akses ID Microsoft Entra untuk mengakses Databricks REST API

Bagian ini menjelaskan cara menggunakan token akses ID Microsoft Entra untuk memanggil Databricks REST API. Dalam contoh berikut, ganti <access-token> dengan token akses ID Microsoft Entra dan <databricks-instance> dengan URL per ruang kerja penyebaran Azure Databricks Anda.

Contoh Python

Contoh ini menunjukkan cara mencantumkan kluster di ruang kerja 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))

Catatan

Jika Anda adalah pengguna non-admin dan ingin masuk sebagai pengguna admin, Anda harus menyediakan X-Databricks-Azure-Workspace-Resource-Id'Authorization' : 'Bearer ' header selain header dan Anda harus berada dalam peran Kontributor atau Pemilik pada sumber daya ruang kerja di Azure. Anda membangun X-Databricks-Azure-Workspace-Resource-Id nilai sebagai berikut:

# ...

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
  }

# ...

Untuk mendapatkan informasi langganan, sumber daya, dan ruang kerja di Azure, lihat Buka sumber daya. Untuk membuka sumber daya target, Anda dapat mencari jenis layanan Azure Databricks dan informasi lainnya di Azure yang Anda ketahui tentang ruang kerja Azure Databricks target.

curl contoh

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

Merefresh token akses ID Microsoft Entra

Jika Anda mendapatkan token refresh bersama dengan token akses ID Microsoft Entra, Anda dapat menggunakan token refresh untuk mendapatkan token baru. Secara default, masa pakai token akses ID Microsoft Entra adalah periode waktu acak antara 60 dan 90 menit (rata-rata 75 menit). Anda dapat mengonfigurasi masa pakai token akses ID Microsoft Entra dengan menggunakan metode dalam masa pakai token yang dapat dikonfigurasi di ID Microsoft Entra (sebelumnya Azure Active Directory).

Contoh berikut menunjukkan cara menggunakan pustaka Phyton MSAL bersama dengan token refresh untuk mendapatkan token baru.

  1. Simpan kode berikut seperti refresh-tokens.py pada mesin lokal Anda.

    # 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. Lakukan salah satu hal berikut ini:

    • Dalam kode sebelumnya, ganti <client-id> dengan ID klien aplikasi terdaftar dan <tenant-id> dengan ID penyewa aplikasi terdaftar, lalu <refresh-token> jalankan skrip, misalnya python get-tokens-for-user.py.
    • Berikan ID klien aplikasi yang terdaftar, ID penyewa aplikasi yang terdaftar, dan token penyegaran saat Anda menjalankan skrip, misalnya python refresh-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de "0.ASkAIj...huE84ALg". Jika argumen baris perintah berisi karakter khusus, Anda harus mengelilinginya dengan tanda kutip.
  3. Akses ID Microsoft Entra baru dan token refresh dicetak ke terminal Anda.