Bagikan melalui


Mengautentikasi aplikasi Python ke layanan Azure selama pengembangan lokal menggunakan autentikasi broker

Autentikasi broker mengumpulkan kredensial pengguna menggunakan broker autentikasi sistem untuk mengautentikasi aplikasi. Broker autentikasi sistem adalah aplikasi yang berjalan di komputer pengguna yang mengelola jabat tangan autentikasi dan pemeliharaan token untuk semua akun yang terhubung.

Autentikasi broker menawarkan manfaat berikut:

  • Mengaktifkan Single Sign-On (SSO): Memungkinkan aplikasi menyederhanakan cara pengguna mengautentikasi dengan ID Microsoft Entra dan melindungi token refresh ID Microsoft Entra dari eksfiltrasi dan penyalahgunaan.
  • Keamanan yang ditingkatkan: Banyak peningkatan keamanan dikirimkan dengan broker, tanpa perlu memperbarui logika aplikasi.
  • Dukungan fitur yang ditingkatkan: Dengan bantuan broker, pengembang dapat mengakses OS yang kaya dan kemampuan layanan.
  • Integrasi sistem: Aplikasi yang menggunakan broker plug-and-play dengan pemilih akun bawaan, memungkinkan pengguna untuk dengan cepat memilih akun yang ada alih-alih memasukkan kembali kredensial yang sama berulang-ulang.
  • Perlindungan Token: Memastikan bahwa token refresh terikat perangkat dan memungkinkan aplikasi memperoleh token akses terikat perangkat. Lihat Perlindungan Token.

Windows menyediakan broker autentikasi yang disebut Web Account Manager (WAM). WAM memungkinkan penyedia identitas seperti MICROSOFT Entra ID untuk secara asli terhubung ke OS dan menyediakan layanan masuk yang aman ke aplikasi. Autentikasi broker memungkinkan aplikasi untuk semua operasi yang diizinkan oleh info masuk masuk interaktif.

Akun Microsoft pribadi dan akun kantor atau sekolah didukung. Pada versi Windows yang didukung, UI berbasis browser default diganti dengan pengalaman autentikasi yang lebih lancar, mirip dengan aplikasi Windows bawaan.

macOS tidak secara asli menyertakan broker autentikasi bawaan. Pustaka klien Azure Identity menerapkan fitur autentikasi broker menggunakan mekanisme khusus platform dan dapat berintegrasi dengan aplikasi seperti Portal Perusahaan Microsoft saat perangkat dikelola. Untuk informasi selengkapnya, lihat Plug-in SSO Microsoft Enterprise untuk perangkat Apple.

Linux menggunakan akses menyeluruh Microsoft untuk Linux sebagai broker autentikasinya.

Mengonfigurasi aplikasi untuk autentikasi broker

Untuk mengaktifkan autentikasi broker di aplikasi Anda, ikuti langkah-langkah berikut:

  1. Di portal Microsoft Azure, navigasikan ke ID Microsoft Entra dan pilih Pendaftaran aplikasi di menu sebelah kiri.

  2. Pilih pendaftaran untuk aplikasi Anda, lalu pilih Autentikasi.

  3. Tambahkan URI pengalihan yang sesuai ke pendaftaran aplikasi Anda melalui konfigurasi platform:

    1. Di bawah Konfigurasi platform, pilih + Tambahkan platform.

    2. Di bawah Konfigurasikan platform, pilih petak peta untuk jenis aplikasi (platform) Anda untuk mengonfigurasi pengaturannya, seperti aplikasi seluler dan desktop.

    3. Di URI pengalihan kustom, masukkan URI pengalihan berikut untuk platform Anda:

      Platform Pengalihan URI
      Windows 10+ atau WSL ms-appx-web://Microsoft.AAD.BrokerPlugin/{your_client_id}
      macOS msauth.com.msauth.unsignedapp://auth untuk aplikasi yang tidak ditandatangani
      msauth.{bundle_id}://auth untuk aplikasi yang ditandatangani
      Linux https://login.microsoftonline.com/common/oauth2/nativeclient

      Ganti {your_client_id} atau {bundle_id} dengan ID Aplikasi (klien) dari panel Gambaran Umum pendaftaran aplikasi.

    4. Pilih Konfigurasikan.

    Untuk mempelajari selengkapnya, lihat Menambahkan URI pengalihan ke pendaftaran aplikasi.

  4. Kembali ke panel Autentikasi , di bawah Pengaturan tingkat lanjut, pilih Ya untuk Izinkan alur klien publik.

  5. Pilih Simpan untuk menerapkan perubahan.

  6. Untuk mengotorisasi aplikasi untuk sumber daya tertentu, navigasikan ke sumber daya yang dimaksud, pilih Izin API, dan aktifkan Microsoft Graph dan sumber daya lain yang ingin Anda akses.

    Penting

    Anda juga harus menjadi admin penyewa untuk memberikan persetujuan ke aplikasi Anda saat masuk untuk pertama kalinya.

Menetapkan peran

Agar kode aplikasi Anda berhasil dijalankan dengan autentikasi broker, berikan izin akun pengguna Anda menggunakan kontrol akses berbasis peran Azure (RBAC). Tetapkan peran yang sesuai ke akun pengguna Anda untuk layanan Azure yang relevan. Contohnya:

  • Azure Blob Storage: Tetapkan peran Kontributor Data Akun Penyimpanan .
  • Azure Key Vault: Tetapkan peran Petugas Rahasia Key Vault .

Jika aplikasi ditentukan, aplikasi harus memiliki izin API yang ditetapkan untuk user_impersonation Access Azure Storage (langkah 6 di bagian sebelumnya). Izin API ini memungkinkan aplikasi untuk mengakses penyimpanan Azure atas nama pengguna yang masuk setelah persetujuan diberikan selama masuk.

Menerapkan kode

Contoh berikut menunjukkan menggunakan InteractiveBrowserBrokerCredential untuk mengautentikasi dengan BlobServiceClient:

  1. Pasang paket. pywin32 akan digunakan di Windows untuk mengambil jendela yang saat ini berada di latar depan.

    pip install azure-identity-broker pywin32
    
  2. Dapatkan referensi ke jendela induk di atas dialog pemilih akun akan muncul. Dalam contoh kode di bawah ini, itu akan menjadi baris:

    current_window_handle = win32gui.GetForegroundWindow()
    
  3. Buat instans InteractiveBrowserBrokerCredential meneruskan referensi jendela induk. Dalam contoh kode akhir, itu akan menjadi baris:

    credential = InteractiveBrowserBrokerCredential(parent_window_handle=current_window_handle)
    
  4. credential Gunakan untuk mengakses layanan Azure, yaitu Blob Storage dalam contoh ini.

Berikut adalah contoh kode akhir:

import win32gui
from azure.identity.broker import InteractiveBrowserBrokerCredential
from azure.storage.blob import BlobServiceClient

# Get the handle of the current window
current_window_handle = win32gui.GetForegroundWindow()

# To authenticate and authorize with an app, use the following line to get a credential and
# substitute the <app_id> and <tenant_id> placeholders with the values for your app and tenant.
# credential = InteractiveBrowserBrokerCredential(parent_window_handle=current_window_handle, client_id=<app_id>, tenant_id=<tenant_id>)
credential = InteractiveBrowserBrokerCredential(parent_window_handle=current_window_handle)
client = BlobServiceClient("https://<storage-account-name>.blob.core.windows.net/", credential=credential)

# Prompt for credentials appears on first use of the client
for container in client.list_containers():
    print(container.name)

Untuk kontrol yang lebih tepat, seperti mengatur batas waktu, Anda dapat menyediakan argumen tertentu seperti InteractiveBrowserBrokerCredentialtimeout.

Agar kode berhasil dijalankan, akun pengguna Anda harus diberi peran Azure pada akun penyimpanan yang memungkinkan akses ke kontainer blob seperti Kontributor Data Akun Penyimpanan. Jika aplikasi ditentukan, aplikasi harus memiliki izin API yang ditetapkan untuk user_impersonation Access Azure Storage (langkah 6 di bagian sebelumnya). Izin API ini memungkinkan aplikasi untuk mengakses penyimpanan Azure atas nama pengguna yang masuk setelah persetujuan diberikan selama masuk.

Cuplikan layar berikut menunjukkan pengalaman autentikasi interaktif dan broker alternatif:

Cuplikan layar yang menunjukkan pengalaman masuk Windows saat menggunakan instans InteractiveBrowserCredential berkemampuan broker untuk mengautentikasi pengguna.

Penting

Dukungan macOS ada di azure-identity-broker versi 1.3.0 dan yang lebih baru.

Contoh berikut menunjukkan penggunaan InteractiveBrowserBrokerCredential untuk mengautentikasi dengan BlobServiceClient.

  1. Pasang paket. msal (Pustaka Autentikasi Microsoft) digunakan untuk menyediakan konstanta untuk parent_window_handle parameter .

    pip install azure-identity-broker msal
    
  2. Buat instans InteractiveBrowserBrokerCredential dengan meneruskan referensi jendela induk. Ini mengharuskan Anda untuk mendapatkan referensi ke jendela induk di atas tempat dialog pemilih akun akan muncul (disediakan oleh msal modul). Dalam contoh kode di bawah ini, itu akan menjadi baris:

    credential = InteractiveBrowserBrokerCredential(
        parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
    )
    
  3. credential Gunakan untuk mengakses layanan Azure, yaitu Blob Storage dalam contoh ini.

Berikut adalah contoh kode akhir:

from azure.identity.broker import InteractiveBrowserBrokerCredential
from azure.storage.blob import BlobServiceClient
import msal

credential = InteractiveBrowserBrokerCredential(
    parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
)

client = BlobServiceClient("https://<storage-account-name>.blob.core.windows.net/", credential=credential)

# Prompt for credentials appears on first use of the client
for container in client.list_containers():
    print(container.name)

Untuk informasi selengkapnya tentang menggunakan MSAL Python dengan broker autentikasi di macOS, lihat Menggunakan MSAL Python dengan Broker Autentikasi di macOS.

Untuk kontrol yang lebih tepat, seperti mengatur batas waktu, Anda dapat menyediakan argumen tertentu seperti InteractiveBrowserBrokerCredentialtimeout.

Agar kode berhasil dijalankan, akun pengguna Anda harus diberi peran Azure pada akun penyimpanan yang memungkinkan akses ke kontainer blob seperti Kontributor Data Akun Penyimpanan. Jika aplikasi ditentukan, aplikasi harus memiliki izin API yang ditetapkan untuk user_impersonation Access Azure Storage (langkah 6 di bagian sebelumnya). Izin API ini memungkinkan aplikasi untuk mengakses penyimpanan Azure atas nama pengguna yang masuk setelah persetujuan diberikan selama masuk.

Cuplikan layar berikut menunjukkan pengalaman autentikasi interaktif dan broker alternatif:

Cuplikan layar yang menunjukkan pengalaman masuk macOS saat menggunakan instans InteractiveBrowserCredential berkemampuan broker untuk mengautentikasi pengguna.

Penting

Dukungan Linux ada di azure-identity-broker versi 1.3.0 dan yang lebih baru.

Contoh berikut menunjukkan menggunakan InteractiveBrowserBrokerCredential untuk mengautentikasi dengan BlobServiceClient:

  1. Pasang semua paket. msal (Pustaka Autentikasi Microsoft) digunakan untuk menyediakan konstanta untuk parent_window_handle parameter .

    pip install azure-identity-broker msal
    
  2. Buat instans InteractiveBrowserBrokerCredential dengan memberikan referensi jendela induk. Ini mengharuskan Anda untuk mendapatkan referensi ke jendela induk di atas tempat dialog pemilih akun akan muncul (disediakan oleh msal modul). Dalam contoh kode di bawah ini, itu akan menjadi baris:

    credential = InteractiveBrowserBrokerCredential(
        parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
    )
    
  3. credential Gunakan untuk mengakses layanan Azure, yaitu Blob Storage dalam contoh ini.

Berikut adalah contoh kode akhir:

from azure.identity.broker import InteractiveBrowserBrokerCredential
from azure.storage.blob import BlobServiceClient
import msal

credential = InteractiveBrowserBrokerCredential(
    parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
)

client = BlobServiceClient("https://<storage-account-name>.blob.core.windows.net/", credential=credential)

# Prompt for credentials appears on first use of the client
for container in client.list_containers():
    print(container.name)

Pastikan Anda memiliki dependensi Linux yang terinstal pada distribusi Linux Anda sebelum menjalankan contoh kode ini. Selain itu, ada instruksi terpisah untuk WSL tergantung pada distribusi.

Untuk kontrol yang lebih tepat, seperti mengatur batas waktu, Anda dapat menyediakan argumen tertentu seperti InteractiveBrowserBrokerCredentialtimeout.

Agar kode berhasil dijalankan, akun pengguna Anda harus diberi peran Azure pada akun penyimpanan yang memungkinkan akses ke kontainer blob seperti Kontributor Data Akun Penyimpanan. Jika aplikasi ditentukan, aplikasi harus memiliki izin API yang ditetapkan untuk user_impersonation Access Azure Storage (langkah 6 di bagian sebelumnya). Izin API ini memungkinkan aplikasi untuk mengakses penyimpanan Azure atas nama pengguna yang masuk setelah persetujuan diberikan selama masuk.

Video berikut menunjukkan pengalaman autentikasi interaktif dan broker alternatif:

Gif animasi yang menunjukkan pengalaman masuk Linux saat menggunakan instans InteractiveBrowserCredential berkemampuan broker untuk mengautentikasi pengguna.