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.
Berlaku untuk: Penyewa Workforce
Penyewa eksternal (pelajari lebih lanjut)
Tutorial ini memandu Anda mengamankan aplikasi Web Python Flask.
Di tutorial ini, Anda akan:
- Membuat proyek Python Flask
- Menginstal dependensi yang diperlukan
- Mengonfigurasi aplikasi web Flask Anda untuk menggunakan platform identitas Microsoft untuk autentikasi
- Menguji pengalaman masuk dan keluar di aplikasi web Flask Anda
Prasyarat
- Penyewa dari kalangan tenaga kerja. Anda dapat menggunakan Direktori Default atau menyiapkan tenant baru.
- Daftarkan aplikasi baru di pusat admin Microsoft Entra, dikonfigurasi hanya untuk Akun di direktori organisasi ini. Lihat Mendaftarkan aplikasi untuk detail selengkapnya. Rekam nilai berikut dari halaman Gambaran Umum aplikasi untuk digunakan nanti:
- ID Aplikasi (klien)
- ID Direktori (Penyewa)
- Tambahkan rahasia klien ke pendaftaran aplikasi Anda. Jangan gunakan rahasia klien di aplikasi produksi. Gunakan sertifikat atau kredensial federasi sebagai gantinya. Untuk informasi selengkapnya, lihat menambahkan kredensial ke aplikasi Anda.
- Python 3+.
- Visual Studio Code atau editor kode lainnya.
Membuat proyek Flask
Buat folder untuk menghosting aplikasi Flask Anda, seperti flask-web-app.
Buka jendela konsol, dan ubah ke direktori folder aplikasi web Flask Anda menggunakan perintah.
cd flask-web-app
Menyiapkan lingkungan virtual
Bergantung pada sistem operasi Anda, jalankan perintah berikut untuk menyiapkan lingkungan virtual Anda dan mengaktifkannya:
Untuk sistem operasi windows:
py -m venv .venv .venv\scripts\activate
Untuk sistem operasi macOS atau Linux:
python3 -m venv .venv source .venv/bin/activate
Menginstal dependensi aplikasi
Untuk menginstal dependensi aplikasi, jalankan perintah berikut:
pip install flask
pip install python-dotenv
pip install requests
pip install "ms_identity_python[flask] @ git+https://github.com/azure-samples/ms-identity-python@0.9"
Pustaka ms_identity_python yang Anda instal secara otomatis menginstal Microsoft Authentication Library (MSAL) untuk Python sebagai dependensinya. MSAL Python adalah pustaka yang memungkinkan Anda mengautentikasi pengguna dan mengelola token akses mereka.
Setelah menginstal pustaka yang diperlukan, perbarui file persyaratan Anda dengan menjalankan perintah berikut:
pip freeze > requirements.txt
Menambahkan konfigurasi Anda
Buat file .env* di folder akar Anda untuk menyimpan konfigurasi aplikasi Anda dengan aman. File .env Anda harus berisi variabel lingkungan berikut:
CLIENT_ID="<Enter_your_client_id>" CLIENT_SECRET="<Enter_your_client_secret>" AUTHORITY="https://login.microsoftonline.com/<Enter_tenant_id>" REDIRECT_URI="<Enter_redirect_uri>"
Ganti tanda pengganti dengan nilai berikut:
- Ganti
<Enter_your_client_id>
dengan ID Aplikasi (ID klien) dari aplikasi web klien yang Anda daftarkan. - Ganti
<Enter_tenant_id>
dengan ID Direktori (Penyewa) tempat Anda mendaftarkan aplikasi web. - Ganti
<Enter_your_client_secret>
dengan nilai rahasia Klien untuk aplikasi web yang Anda buat. Dalam tutorial ini, kami menggunakan rahasia untuk tujuan demonstrasi. Dalam produksi, gunakan pendekatan yang lebih aman seperti sertifikat atau kredensial identitas federasi. - Ganti
<Enter_redirect_uri>
dengan URI pengalihan yang Anda daftarkan sebelumnya. Tutorial ini mengatur jalur URI pengalihan kehttp://localhost:3000/getAToken
.
- Ganti
Buat file app_config.py untuk membaca variabel lingkungan dan menambahkan konfigurasi lain yang Anda butuhkan.
import os AUTHORITY = os.getenv("AUTHORITY") CLIENT_ID = os.getenv("CLIENT_ID") CLIENT_SECRET = os.getenv("CLIENT_SECRET") REDIRECT_URI = os.getenv("REDIRECT_URI") SESSION_TYPE = "filesystem" # Tells the Flask-session extension to store sessions in the filesystem. Don't use in production apps.
Mengonfigurasi titik akhir aplikasi
Pada tahap ini, Anda membuat titik akhir aplikasi web dan menambahkan logika bisnis ke aplikasi Anda.
Buat file bernama app.py di folder akar Anda.
Impor dependensi yang diperlukan di bagian atas file app.py.
import os import requests from flask import Flask, render_template from identity.flask import Auth import app_config
Inisialisasi aplikasi Flask Anda dan konfigurasikan untuk menggunakan jenis penyimpanan sesi yang Anda tentukan dalam file app_config.py Anda.
app = Flask(__name__) app.config.from_object(app_config)
Inisialisasi klien aplikasi. Aplikasi web Flask adalah klien rahasia. Kami meneruskan rahasia klien karena klien yang bersifat rahasia dapat menyimpannya dengan aman. Di balik layar, pustaka identitas memanggil kelas
ConfidentialClientApplication
dari pustaka MSAL.auth = Auth( app, authority=app.config["AUTHORITY"], client_id=app.config["CLIENT_ID"], client_credential=app.config["CLIENT_SECRET"], redirect_uri=app.config["REDIRECT_URI"] )
Tambahkan titik akhir yang diperlukan ke aplikasi Flask Anda. Aplikasi web menggunakan alur kode otorisasi untuk masuk ke pengguna. Pustaka pembungkus MSAL ms_identity_python membantu dalam interaksi dengan pustaka MSAL, sehingga mempermudah penambahan fitur masuk log dan keluar log ke dalam aplikasi Anda. Kami menambahkan halaman indeks dan melindunginya menggunakan dekorator
login_required
yang disediakan oleh pustaka ms_identity_python. Dekoratorlogin_required
memastikan bahwa hanya pengguna yang diautentikasi yang dapat mengakses halaman indeks.@app.route("/") @auth.login_required def index(*, context): return render_template( 'index.html', user=context['user'], title="Flask Web App Sample", )
Pengguna dijamin akan hadir karena kami menghias tampilan ini dengan
@login_required
.
Membuat templat aplikasi
Buat folder yang disebut templat di folder akar Anda. Di folder templat, buat file yang disebut index.html. Ini adalah beranda aplikasi. Tambahkan kode berikut ke file index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
</head>
<body>
<h1>{{ title }}</h1>
<h2>Welcome {{ user.get("name") }}!</h2>
<img src="https://github.com/Azure-Samples/ms-identity-python-webapp-django/raw/main/static/topology.png" alt="Topology">
<ul>
{% if api_endpoint %}
<!-- If an API endpoint is declared and scopes defined, this link will show. We set this in the call an API tutorial. For this tutorial, we do not define this endpoint. -->
<li><a href='/call_api'>Call an API</a></li>
{% endif %}
<li><a href="{{ url_for('identity.logout') }}">Logout</a></li>
</ul>
<hr>
<footer style="text-align: right">{{ title }}</footer>
</body>
</html>
Menjalankan dan menguji sampel aplikasi web
Di terminal Anda, jalankan perintah berikut:
python3 -m flask run --debug --host=localhost --port=3000
Anda dapat menggunakan port pilihan Anda. Port ini harus mirip dengan port URI pengalihan yang Anda daftarkan sebelumnya.
Buka browser Anda, lalu buka
http://localhost:3000
. Anda melihat halaman masuk.Masuk dengan akun Microsoft Anda dengan mengikuti langkah-langkahnya. Anda diminta untuk memberikan alamat email dan kata sandi untuk masuk.
Jika aplikasi memerlukan cakupan apa pun, layar persetujuan ditampilkan. Aplikasi meminta izin untuk mempertahankan akses ke data yang Anda izinkan aksesnya dan untuk masuk. Pilih Terima. Layar ini tidak muncul jika tidak ada cakupan yang ditentukan.
Setelah masuk atau mendaftar, Anda dialihkan kembali ke aplikasi web. Anda melihat halaman yang terlihat mirip dengan cuplikan layar berikut:
Pilih Keluar untuk keluar dari aplikasi. Anda diminta untuk memilih akun yang ingin Anda keluar dari. Pilih akun yang Anda gunakan untuk masuk.
Menggunakan domain URL kustom (Opsional)
Penyewa tenaga kerja tidak mendukung domain URL kustom.