Mulai cepat: Memperoleh token dan memanggil Microsoft Graph dari aplikasi daemon Python
Dalam mulai cepat ini, Anda mengunduh dan menjalankan sampel kode yang menunjukkan cara aplikasi konsol Python bisa mendapatkan token akses menggunakan identitas aplikasi untuk memanggil Microsoft Graph API dan menampilkan daftar pengguna di direktori. Sampel kode juga menunjukkan bagaimana pekerjaan tanpa pengawasan atau layanan Windows dapat berjalan dengan identitas aplikasi, bukan identitas pengguna.
Prasyarat
Untuk menjalankan sampel ini, Anda perlu:
Mendaftar dan mengunduh aplikasi mulai cepat Anda
Langkah 1: Daftarkan aplikasi Anda
Tip
Langkah-langkah dalam artikel ini mungkin sedikit berbeda berdasarkan portal tempat Anda memulai.
Untuk mendaftarkan aplikasi Anda dan menambahkan informasi pendaftaran aplikasi ke solusi Anda secara manual, ikuti langkah-langkah ini:
- Masuk ke Pusat Admin Microsoft Entra.
- Jika Anda memiliki akses ke beberapa penyewa, gunakan ikon Pengaturan di menu atas untuk beralih ke penyewa tempat Anda ingin mendaftarkan aplikasi dari menu Direktori + langganan.
- Telusuri ke Aplikasi> Identitas>Pendaftaran aplikasi, pilih Pendaftaran baru.
- Masukkan Nama untuk aplikasi Anda, contohnya
Daemon-console
. Pengguna aplikasi mungkin melihat nama ini, dan Anda dapat mengubahnya nanti. - Pilih Daftarkan.
- Di bagian Kelola, pilih Sertifikat & rahasia.
- Di bagian Rahasia klien, pilih Rahasia klien baru, masukkan nama, lalu pilih Tambahkan. Catat nilai rahasia di lokasi aman untuk digunakan di langkah selanjutnya.
- Di bawah Kelola, pilih Izin API>Tambahkan izin. Pilih Microsoft Graph.
- Pilih Izin aplikasi.
- Di bagian simpul Pengguna, pilih User.Read.All, lalu pilih Tambahkan izin.
Langkah 2: Unduh proyek Python
Langkah 3: Konfigurasikan proyek Python
Ekstrak file zip ke folder lokal yang dekat dengan akar disk, misalnya, C:\Azure-Samples.
Navigasi ke sub folder 1-Call-MsGraph-WithSecret.
Edit parameters.json dan ganti nilai bidang
authority
,client_id
, dansecret
dengan cuplikan berikut:"authority": "https://login.microsoftonline.com/Enter_the_Tenant_Id_Here", "client_id": "Enter_the_Application_Id_Here", "secret": "Enter_the_Client_Secret_Here"
Mana:
Enter_the_Application_Id_Here
- adalah ID aplikasi (klien) untuk aplikasi yang Anda daftarkan.Enter_the_Tenant_Id_Here
- ganti nilai ini dengan Id Penyewa atau Nama penyewa (misalnya, contoso.microsoft.com)Enter_the_Client_Secret_Here
: ganti nilai ini dengan rahasia klien yang Anda buat di langkah 1.
Tip
Untuk menemukan nilai ID Aplikasi (klien), ID Direktori (penyewa), buka halaman Gambaran Umum aplikasi di pusat admin Microsoft Entra. Untuk membuat kunci baru, buka halaman Sertifikat & rahasia.
Langkah 4: Persetujuan admin
Jika Anda mencoba menjalankan aplikasi pada saat ini, Anda akan menerima HTTP 403 - Kesalahan terlarang: Insufficient privileges to complete the operation
. Kesalahan ini terjadi karena izin khusus aplikasi memerlukan persetujuan Admin: Administrator Global direktori Anda harus memberikan persetujuan untuk aplikasi Anda. Memilih salah satu opsi di bawah ini bergantung pada peran Anda:
Administrator penyewa global
Jika Anda adalah administrator penyewa global, buka halaman Izin API di Pendaftaran aplikasi di pusat admin Microsoft Entra dan pilih Berikan persetujuan admin untuk {Tenant Name} (Di mana {Tenant Name} adalah nama direktori Anda).
Pengguna standar
Jika Anda pengguna standar penyewa Anda, minta administrator global untuk memberikan persetujuan admin untuk aplikasi. Untuk melakukannya, berikan URL berikut kepada administrator:
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
Mana:
Enter_the_Tenant_Id_Here
- ganti nilai ini dengan Id Penyewa atau Nama penyewa (misalnya, contoso.microsoft.com)Enter_the_Application_Id_Here
- adalah ID Aplikasi (klien) untuk aplikasi yang Anda daftarkan sebelumnya.
Langkah 5: Menjalankan aplikasi
Anda harus menginstal dependensi sampel ini sekali.
pip install -r requirements.txt
Kemudian, jalankan aplikasi melalui prompt perintah atau konsol:
python confidential_client_secret_sample.py parameters.json
Anda akan melihat pada output konsol beberapa fragmen JSON yang mewakili daftar pengguna di direktori Microsoft Entra Anda.
Penting
Aplikasi mulai cepat ini menggunakan rahasia klien untuk mengidentifikasi aplikasi itu sendiri sebagai klien rahasia. Karena rahasia klien ditambahkan sebagai teks biasa ke file proyek, karena alasan keamanan, sebaiknya Anda menggunakan sertifikat alih-alih rahasia klien sebelum mempertimbangkan aplikasi sebagai aplikasi produksi. Untuk informasi selengkapnya tentang cara menggunakan sertifikat, lihat instruksi ini di repositori GitHub yang sama untuk sampel ini, tetapi di folder kedua 2-Call-MsGraph-WithCertificate.
Informasi selengkapnya
MSAL Python
MSAL Python adalah pustaka yang digunakan untuk masuk ke pengguna dan meminta token yang digunakan untuk mengakses API yang dilindungi oleh platform identitas Microsoft. Seperti yang dijelaskan, mulai cepat ini meminta token menggunakan identitas aplikasi itu sendiri alih-alih izin yang didelegasikan. Alur autentikasi dalam kasus ini dikenal sebagai alur oauth kredensial klien. Untuk informasi selengkapnya tentang cara menggunakan MSAL Python dengan aplikasi daemon, lihat artikel ini.
Anda dapat menginstal MSAL Python dengan menjalankan perintah pip berikut.
pip install msal
Inisialisasi MSAL
Anda bisa menambahkan referensi untuk MSAL dengan menambahkan kode berikut:
import msal
Lalu, inisialisasi MSAL menggunakan kode berikut:
app = msal.ConfidentialClientApplication(
config["client_id"], authority=config["authority"],
client_credential=config["secret"])
Mana: | Deskripsi |
---|---|
config["secret"] |
Apakah rahasia klien dibuat untuk aplikasi di pusat admin Microsoft Entra. |
config["client_id"] |
Adalah ID Aplikasi (klien) untuk aplikasi yang terdaftar di pusat admin Microsoft Entra. Anda dapat menemukan nilai ini di halaman Gambaran Umum aplikasi di pusat admin Microsoft Entra. |
config["authority"] |
Titik akhir STS untuk diautentikasi oleh pengguna. Biasanya https://login.microsoftonline.com/{tenant} untuk cloud publik, di mana {tenant} merupakan nama penyewa atau ID penyewa Anda. |
Untuk informasi selengkapnya, lihat dokumen referensi untuk ConfidentialClientApplication
.
Meminta token
Untuk meminta token menggunakan identitas aplikasi, gunakan metode AcquireTokenForClient
:
result = None
result = app.acquire_token_silent(config["scope"], account=None)
if not result:
logging.info("No suitable token exists in cache. Let's get a new one from AAD.")
result = app.acquire_token_for_client(scopes=config["scope"])
Mana: | Deskripsi |
---|---|
config["scope"] |
Berisi cakupan yang diminta. Untuk klien rahasia, ini harus menggunakan format yang mirip {Application ID URI}/.default dengan menunjukkan bahwa cakupan yang diminta adalah yang ditentukan secara statis dalam objek aplikasi yang ditetapkan di pusat admin Microsoft Entra (untuk Microsoft Graph, {Application ID URI} menunjuk ke https://graph.microsoft.com ). Untuk API web kustom, {Application ID URI} ditentukan di bawah bagian Mengekspos API di Pendaftaran aplikasi di pusat admin Microsoft Entra. |
Untuk informasi selengkapnya, lihat dokumen referensi untuk AcquireTokenForClient
.
Bantuan dan dukungan
Jika Anda memerlukan bantuan, ingin melaporkan masalah, atau ingin mempelajari opsi dukungan, lihat Bantuan dan dukungan bagi pengembang.
Langkah berikutnya
Untuk mempelajari selengkapnya tentang aplikasi daemon, lihat halaman arahan skenario.