Tutorial: Memanggil API yang dilindungi dan menampilkan hasilnya
Dalam tutorial sebelumnya, Anda menambahkan pengalaman masuk dan keluar ke aplikasi. Anda sekarang dapat membangun fungsionalitas ini untuk memungkinkan pengguna yang masuk memanggil API web yang dilindungi. Untuk tujuan tutorial ini, Anda memanggil Microsoft Graph API dan menampilkan informasi profil pengguna yang masuk.
Dalam tutorial ini:
- Menambahkan kode untuk memanggil API hilir yang dilindungi
- Menjalankan dan menguji aplikasi
Panggil API dan tampilkan hasilnya
Untuk memanggil API yang dilindungi, Anda harus terlebih dahulu memperoleh token akses untuk pengguna saat ini dengan memanggil auth.get_token_for_user
sebagai berikut:
@app.route("/call_downstream_api")
def call_downstream_api():
token = auth.get_token_for_user(app_config.SCOPE)
if "error" in token:
return redirect(url_for("login"))
# Use access token to call downstream api
api_result = requests.get(
app_config.ENDPOINT,
headers={'Authorization': 'Bearer ' + token['access_token']},
timeout=30,
).json()
return render_template('display.html', result=api_result)
Saat pengguna menavigasi ke /call_downstream_api
rute URL, Flask memanggil call_downstream_api()
fungsi yang pertama kali mencoba mendapatkan token akses menggunakan auth.get_token_for_user(app_config.SCOPE)
. Jika ada masalah autentikasi atau kesalahan apa pun dalam token, alihkan pengguna ke halaman masuk untuk autentikasi ulang.
Jika aplikasi berhasil mendapatkan token akses, aplikasi membuat permintaan HTTP ke API hilir menggunakan metode .requests.get(...)
Dalam permintaan, URL API hilir kami ditentukan dalam app_config.ENDPOINT
. Anda juga meneruskan token akses di Authorization
bidang header permintaan.
Permintaan yang berhasil ke API hilir (Microsoft Graph API) mengembalikan respons JSON yang api_result
disimpan dalam variabel dan diteruskan ke display.html
templat untuk penyajian.
Menambahkan kode untuk menjalankan aplikasi
Untuk menjalankan aplikasi Anda, tambahkan cuplikan kode berikut di akhir file app.py Anda.
if __name__ == "__main__":
app.run()
Menguji aplikasi
Ikuti langkah-langkah ini untuk menguji pengalaman masuk, memanggil API, dan keluar di aplikasi web Anda:
Jika Anda belum melakukannya, ganti nilai tempat penampung dalam file .env.sample dengan detail pendaftaran aplikasi Microsoft Entra Anda (ID klien, rahasia klien, dan URL otoritas)
Buat lingkungan virtual untuk aplikasi:
py -m venv .venv .venv\scripts\activate
Instal persyaratan menggunakan
pip
:pip install -r requirements.txt
Jalankan aplikasi dari baris perintah. Pastikan aplikasi Anda berjalan pada port yang sama dengan URI pengalihan yang Anda konfigurasi sebelumnya.
flask run --host=localhost --port=5000
Salin URL https yang muncul di terminal, misalnya, https://localhost:5000, dan tempelkan ke browser. Sebaiknya gunakan sesi browser privat atau penyamaran.
Setelah jendela masuk muncul, berikan akun untuk masuk dan pilih Berikutnya:
Browser Anda akan mengalihkan Anda untuk memberikan kata sandi untuk akun Anda. Masukkan kata sandi dan pilih Masuk.
Pada titik ini, alur masuk mungkin bervariasi tergantung pada informasi keamanan yang diperlukan organisasi Anda, misalnya, autentikasi multifaktor menggunakan aplikasi pengautentikasi.
Untuk Tetap masuk, Anda dapat memilih Tidak atau Ya.
Aplikasi meminta izin untuk mempertahankan akses ke data yang telah Anda akses, masuk, dan membaca profil Anda. Pilih Terima untuk menyetujui izin ini.
Cuplikan layar berikut muncul, menunjukkan bahwa Anda masuk ke aplikasi:
Untuk memanggil API yang dilindungi dan menampilkan hasilnya, pilih Panggil API hilir. Panggilan yang berhasil ke Microsoft Graph API mengembalikan informasi tentang pengguna yang masuk, seperti yang ditunjukkan:
Keluar dari aplikasi
- Pilih Keluar untuk keluar dari aplikasi.
- Anda diminta untuk memilih akun untuk keluar. Pilih akun yang Anda gunakan untuk masuk.
- Pesan muncul yang menunjukkan bahwa Anda keluar. Anda sekarang dapat menutup jendela browser.
Lihat juga
Aplikasi yang Anda buat menggunakan pustaka identitas, yang mengabstraksi sebagian besar detail Microsoft Authentication Library (MSAL) untuk Python. Untuk informasi selengkapnya tentang cara menggunakan MSAL Python untuk skenario yang berbeda, lihat dokumentasi MSAL Python.