Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:
A munkaerő bérlők
Külső bérlők (további információ)
Ez az oktatóanyag bemutatja a Python Flask-webalkalmazások biztonságossá tételét.
Ebben az oktatóanyagban ön:
- Python Flask-projekt létrehozása
- A szükséges függőségek telepítése
- A Flask-webalkalmazás konfigurálása a Microsoft identitásplatformjának hitelesítéshez való használatára
- A bejelentkezési és kijelentkezési élmény tesztelése a Flask-webalkalmazásban
Előfeltételek
- Munkaerőt igénybe vevő. Használhatja az alapértelmezett címtárat, vagy beállíthat egy új bérlőt.
- Regisztráljon egy új alkalmazást a Microsoft Entra felügyeleti központban, amely csak ebben a szervezeti címtárban lévő fiókokhoz van konfigurálva. További részletekért tekintse meg az alkalmazás regisztrálását . Jegyezze fel a következő értékeket az alkalmazás áttekintési oldaláról későbbi használatra:
- Alkalmazás (ügyfél) azonosítója
- Címtár (bérlő) azonosítója
- Adjon hozzá egy titkos ügyfélkulcsot az alkalmazásregisztrációhoz. Ne használja ügyféltitkokat az éles alkalmazásokban. Használjon inkább tanúsítványokat vagy összevont hitelesítő adatokat. További információ: Hitelesítő adatok hozzáadása az alkalmazáshoz.
- Python 3+.
- Visual Studio Code vagy más kódszerkesztő.
Flask-projekt létrehozása
Hozzon létre egy mappát a Flask-alkalmazás üzemeltetéséhez, például Flask-webalkalmazás.
Nyisson meg egy konzolablakot, és a paranccsal váltson a Flask-webalkalmazás mappájára
cd flask-web-appVirtuális környezet beállítása
Az operációs rendszertől függően futtassa a következő parancsokat a virtuális környezet beállításához és aktiválásához:
Windows operációs rendszer esetén:
py -m venv .venv .venv\scripts\activateMacOS vagy Linux operációs rendszer esetén:
python3 -m venv .venv source .venv/bin/activate
Alkalmazásfüggőségek telepítése
Alkalmazásfüggőségek telepítéséhez futtassa a következő parancsokat:
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"
A telepített ms_identity_python kódtár függőségként automatikusan telepíti a Pythonhoz készült Microsoft Authentication Libraryt (MSAL). Az MSAL Python az a kódtár, amely lehetővé teszi a felhasználók hitelesítését és a hozzáférési jogkivonatok kezelését.
A szükséges kódtárak telepítése után frissítse a követelményfájlt az alábbi parancs futtatásával:
pip freeze > requirements.txt
Az alkalmazás konfigurálása hitelesítéshez
A felhasználókat a Microsoft identitásplatform használatával bejelentkező webalkalmazások egy .env nevű konfigurációs fájlon keresztül vannak konfigurálva. A Python Flaskban a következő értékeket kell megadnia:
| Környezet változó | Description |
|---|---|
AUTHORITY |
Annak a felhőpéldánynak az URL-címe, amelyben az alkalmazás regisztrálva van. Formátum: https://{Instance}/{TenantId}. Használja a következő példányértékek egyikét:- https://login.microsoftonline.com/ (Nyilvános Azure-felhő)- https://login.microsoftonline.us/ (Azure US Government)- https://login.microsoftonline.de/ (Microsoft Entra Germany)- https://login.partner.microsoftonline.cn/ (Microsoft Entra China, üzemeltető: 21Vianet) |
TENANT_ID |
Annak a bérlőnek az azonosítója, amelyben az alkalmazás regisztrálva van. Válassza ki a bérlőazonosítót az alkalmazásregisztrációból, vagy használja a következő egyiket: - organizations: jelentkezzen be felhasználókat bármely munkahelyi vagy iskolai fiókba- common: jelentkezzenek be felhasználók munkahelyi vagy iskolai fiókkal, illetve Microsoft személyes fiókkal- consumers: csak Microsoft személyes fiókkal jelentkezzenek be a felhasználók |
CLIENT_ID |
Az alkalmazás (ügyfél) azonosítója az alkalmazásregisztrációból beszerzett módon. |
CLIENT_SECRET |
A Microsoft Entra felügyeleti központban a hitelesítő adatok hozzáadásából nyert titkos érték. |
REDIRECT_URI |
Az URI, ahová a Microsoft identitásplatform küldi a biztonsági tokeneket a hitelesítés után. |
A konfigurációs fájl frissítése
Hozzon létre egy .env fájlt a gyökérmappában az alkalmazás konfigurációjának biztonságos tárolásához. A .env fájlnak a következő környezeti változókat kell tartalmaznia:
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>"Helyettesítse a helyőrzőket a következő értékekkel:
- Cserélje le a
<Enter_your_client_id>-t a alkalmazás (ügyfél) azonosítójára, amely az Ön által regisztrált ügyfél-webalkalmazás. - Cserélje ki a
<Enter_tenant_id>helyére a webalkalmazás regisztrációjánál szereplő címtár (bérlő) azonosítót. - Cserélje le a
<Enter_your_client_secret>-t a létrehozott webalkalmazás ügyfél titkos értékére. Ebben az oktatóanyagban a titkos kódokat bemutató célokra használjuk. Éles környezetben használjon biztonságosabb módszereket, például tanúsítványokat vagy federált identitás hitelesítő adatokat. - Cserélje le
<Enter_redirect_uri>a korábban regisztrált átirányítási URI-ra. Az oktatóanyag az átirányítási URI elérési útjáthttp://localhost:3000/getAToken-ra állítja be.
- Cserélje le a
Hozzon létre egy app_config.py fájlt a környezeti változók olvasásához és a szükséges konfigurációk hozzáadásához.
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.
Alkalmazásvégpontok konfigurálása
Ebben a szakaszban létrehozza a webalkalmazás végpontjait, és hozzáadja az üzleti logikát az alkalmazáshoz.
Hozzon létre egy app.py nevű fájlt a gyökérmappában.
Importálja a szükséges függőségeket a app.py fájl tetején.
import os import requests from flask import Flask, render_template from identity.flask import Auth import app_configInicializálja a Flask-alkalmazást, és konfigurálja a app_config.py fájlban megadott munkamenet-tárolási típus használatára.
app = Flask(__name__) app.config.from_object(app_config)Inicializálja az ügyfélalkalmazást. A Flask-webalkalmazások bizalmas ügyfélnek számítnak. Azért adjuk át az ügyfél titkos kulcsát, mert a bizalmas ügyfelek biztonságosan tárolhatják azt. A háttérben az identitáskönyvtár meghívja az MSAL könyvtár
ConfidentialClientApplicationosztályát.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"] )Adja hozzá a szükséges végpontokat a Flask-alkalmazáshoz. A webalkalmazás a felhasználó bejelentkezéséhez az engedélyezési kód folyamata használja. Az ms_identity_python MSAL burkolótár segít az MSAL-kódtárzal való interakcióban, így egyszerűbbé válik a bejelentkezés és a kijelentkezés az alkalmazásba. Hozzáadunk egy indexlapot, és a
login_requiredkönyvtár által biztosított dekoratőrrel védjük. Alogin_requireddekoratőr biztosítja, hogy csak hitelesített felhasználók férhessenek hozzá az indexlaphoz.@app.route("/") @auth.login_required def index(*, context): return render_template( 'index.html', user=context['user'], title="Flask Web App Sample", )A felhasználó garantáltan jelen van, mert ezt a nézetet
@login_required-val láttuk el.
Az alkalmazássablonok létrehozása
Hozzon létre egy -sablonok nevű mappát, a gyökérmappában. A sablonok mappában hozzon létre egy index.htmlnevű fájlt. Ez az alkalmazás kezdőlapja. Adja hozzá a következő kódot a index.html fájlhoz:
<!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>
A minta webalkalmazás futtatása és tesztelése
A terminálban futtassa a következő parancsot:
python3 -m flask run --debug --host=localhost --port=3000Használhatja a választott portot. Ennek a portnak hasonlónak kell lennie a korábban regisztrált átirányítási URI portjához.
Nyissa meg a böngészőt, majd lépjen a
http://localhost:3000pontra. Megjelenik egy bejelentkezési oldal.Jelentkezzen be Microsoft-fiókjával a lépések végrehajtásával. A rendszer kéri, hogy adjon meg egy e-mail-címet és jelszót a bejelentkezéshez.
Ha az alkalmazásnak bármilyen hatókörre van szüksége, megjelenik egy hozzájárulási képernyő. Az alkalmazás engedélyt kér ahhoz, hogy fenntartsa a hozzáférést azokhoz az adatokhoz, amelyekhez hozzáférést engedélyez, és be kell jelentkeznie. Válassza Elfogadáslehetőséget. Ez a képernyő nem jelenik meg, ha nincs definiálva hatókör.
A bejelentkezés vagy a regisztráció után a rendszer visszairányítja a webalkalmazásba. A következő képernyőképhez hasonló lap jelenik meg:
Válassza Kijelentkezés lehetőséget az alkalmazásból való kijelentkezéshez. A rendszer kéri, hogy válasszon ki egy fiókot, amelyből ki szeretne jelentkezni. Válassza ki a bejelentkezéshez használt fiókot.
Egyéni URL-tartomány használata (nem kötelező)
A munkaerő-bérlők nem támogatják az egyéni URL-tartományokat.