Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pustaka Pustaka Autentikasi Microsoft (MSAL) untuk Python memungkinkan Anda memasukkan pengguna atau aplikasi dengan identitas Microsoft (Microsoft Entra ID, Akun Microsoft, dan Microsoft Entra ID akun). Dengan menggunakan Python MSAL, Anda dapat memperoleh token dari Microsoft Entra ID untuk memanggil API web yang dilindungi seperti Microsoft Graph, API Microsoft lainnya, atau API Anda sendiri.
Prasyarat
- Sebuah akun Azure dengan langganan aktif. Buat akun gratis.
- Python 3.6+.
Pasang paketnya
Instal MSAL untuk paket Python. Anda dapat menemukan Python MSAL di PyPI.
pip install msal
Konsep identitas
Python MSAL adalah bagian dari ekosistem platform identitas Microsoft. Biasakan diri Anda dengan konsep berikut untuk menggunakan Python MSAL secara efektif untuk melindungi aplikasi dan API Anda:
- Pengelolaan identitas dan akses
- Autentikasi dan Otorisasi
- OAuth 2.0 dan OpenID Connect (OIDC) di platform identitas Microsoft
- Akun klien rahasia dan publik di platform identitas Microsoft
- Token keamanan
Skenario penggunaan
Untuk menggunakan Python MSAL, daftarkan aplikasi dengan platform identitas Microsoft. Anda memerlukan akun Azure dengan langganan aktif. Buat akun gratis jika Anda tidak memilikinya. Anda dapat mendaftarkan aplikasi Anda di tenant pelanggan atau tenant tenaga kerja.
Aplikasi dapat menggunakan Python MSAL untuk memperoleh token untuk mengakses API yang dilindungi. Jenis aplikasi yang berbeda memperoleh token menggunakan alur autentikasi yang berbeda. Jenis aplikasi yang didukung termasuk aplikasi desktop, aplikasi web, API web, dan aplikasi yang berjalan di perangkat yang tidak memiliki browser (seperti perangkat IoT).
Dalam Python MSAL, aplikasi dikategorikan sebagai berikut:
- Aplikasi klien publik (desktop dan seluler). Jenis aplikasi ini tidak dapat menyimpan rahasia aplikasi dengan aman.
- Aplikasi klien rahasia (aplikasi web, API web, dan aplikasi daemon). Jenis aplikasi ini menyimpan rahasia yang terdaftar dengan aman dengan Microsoft Entra ID.
Untuk informasi selengkapnya, lihat dokumentasi tentang aplikasi klien publik dan klien rahasia serta berbagai jenis aplikasi dan alur autentikasinya di platform identitas Microsoft.
Setelah menentukan apakah aplikasi Anda adalah aplikasi klien publik atau rahasia, Anda dapat menggunakan Python MSAL untuk memperoleh token untuk skenario yang berbeda.
Penggunaan dasar
Memperoleh token dengan Python MSAL mengikuti pola tiga langkah. Akan ada beberapa variasi untuk alur yang berbeda. Jika Anda ingin melihatnya beraksi, unduh sampel kami.
MSAL bergantung pada pemisahan yang bersih antara klien publik dan aplikasi klien rahasia. Oleh karena itu, buat instans
PublicClientApplicationatauConfidentialClientApplicationdan gunakan kembali selama siklus hidup aplikasi Anda. Misalnya, untuk aplikasi klien publik, kode inisialisasi mungkin terlihat seperti ini:from msal import PublicClientApplication app = PublicClientApplication( "your_client_id", authority="https://login.microsoftonline.com/common")Nilai otoritas bervariasi tergantung pada jenis akun tempat Anda masuk dan jenis penyewa tempat aplikasi Anda terdaftar. Misalnya, untuk masuk ke baik akun Microsoft kerja maupun pribadi yang disediakan di tenant tenaga kerja (Microsoft Entra ID), Anda akan menggunakan
https://login.microsoftonline.com/common. Untuk akun pelanggan yang diprovisikan di tenant pelanggan, otoritas Anda akan berbentuk sepertihttps://<subdomain>.ciamlogin.com. Untuk informasi selengkapnya, lihat dokumentasi penerbit token.Coba dan dapatkan token dari cache terlebih dahulu. Model API di MSAL memberi Anda kontrol eksplisit tentang cara menggunakan cache token. Meskipun mekanisme cache secara teknis bersifat opsional, kami sangat menyarankan Anda untuk menggunakannya di aplikasi Anda. Dengan menggunakan cache, Anda dapat memastikan bahwa Anda tidak melakukan panggilan API tambahan dan menangani refresh token secara otomatis.
# initialize result variable to hole the token response result = None # We now check the cache to see # whether we already have some accounts that the end user already used to sign in before. accounts = app.get_accounts() if accounts: # If so, you could then somehow display these accounts and let end user choose print("Pick the account you want to use to proceed:") for a in accounts: print(a["username"]) # Assuming the end user chose this one chosen = accounts[0] # Now let's try to find a token in cache for this account result = app.acquire_token_silent(["User.Read"], account=chosen)Jika tidak ada token yang cocok di cache atau Anda memilih untuk melewati langkah sebelumnya, kirim permintaan ke Microsoft Entra ID untuk mendapatkan token. Ada metode yang berbeda berdasarkan jenis dan skenario klien Anda, tetapi untuk tujuan contoh kami menunjukkan cara menggunakan
acquire_token_interactive, yang meminta pengguna untuk memberikan kredensial mereka.if not result: # So no suitable token exists in cache. Let's get a new one from Azure AD. result = app.acquire_token_interactive(scopes=["User.Read"]) if "access_token" in result: print(result["access_token"]) # Yay! else: print(result.get("error")) print(result.get("error_description")) print(result.get("correlation_id")) # You may need this when reporting a bugSimpan kode ke dalam file Python secara lokal, seperti msaltest.py.
Jalankan kode dengan menjalankan
python .\msalpytest.py. Visual berikut menunjukkan pengalaman masuk untuk contoh ini.
Setelah autentikasi selesai dan Anda menutup browser, Anda akan dapat melihat token akses yang dicetak di terminal.
Praktik terbaik untuk aplikasi andal yang siap untuk perusahaan
Anda dapat memperoleh token untuk API Web yang dilindungi menggunakan Python MSAL. Anda juga tidak perlu menangani token refresh sendiri. Namun, untuk membangun aplikasi siap perusahaan yang kuat, Anda harus melakukan sedikit lebih banyak. Misalnya, Anda ingin:
Tangani pengecualian, baik saat Anda memperoleh token, tetapi juga saat Anda memanggil API Web yang dilindungi. Secara khusus, jika aplikasi Anda berjalan di penyewa Microsoft Entra di mana admin penyewa telah menetapkan kebijakan Akses Bersyarat untuk memberlakukan Autentikasi Beberapa Faktor (MFA), Anda harus menangani tantangan Klaim.
Anda mungkin ingin mengaktifkan Pencatatan log untuk menelusuri dan mengatasi masalah pada aplikasi Anda serta membantu pengguna, dengan tetap menghormati privasi mereka dan mematuhi GDPR.
Sampel
Ada beberapa sampel yang dapat Anda gunakan untuk mulai menggunakan Python MSAL.
- Sampel dari repositori pustaka. Sampel ini menunjukkan berbagai konfigurasi dan alur autentikasi yang Anda terapkan menggunakan Python MSAL.
- Satu repositori dengan sampel yang digunakan dalam dokumentasi kami. Sampel ini memiliki dokumentasi pendukung untuk membantu Anda membangun dan mereplikasinya dari awal.
References
Baca juga
- Membuat instans aplikasi Anda menggunakan Python MSAL
- Memperoleh token menggunakan Python MSAL