Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Tenanti pracovních sil
Externí tenanti (další informace)
Tento kurz vás provede zabezpečením webové aplikace Python Flask.
V tomto kurzu se naučíte:
- Vytvoření projektu Python Flask
- Instalace požadovaných závislostí
- Konfigurace webové aplikace Flask tak, aby k ověřování používala platformu Microsoft Identity Platform
- Otestování přihlašování a odhlášení ve webové aplikaci Flask
Požadavky
- Součást pracovního týmu. Můžete použít výchozí adresář nebo nastavit nového tenanta.
- Zaregistrujte novou aplikaci v Centru pro správu Microsoft Entra, která je nakonfigurovaná jenom pro účty v tomto organizačním adresáři. Další podrobnosti najdete v tématu Registrace aplikace . Na stránce Přehled aplikace si poznamenejte následující hodnoty pro pozdější použití:
- ID aplikace (klienta)
- ID adresáře (klienta)
- Přidejte do registrace aplikace tajný klíč klienta. Nepoužívejte tajné kódy klienta v produkčních aplikacích. Místo toho použijte certifikáty nebo federované přihlašovací údaje. Další informace najdete v tématu přidání přihlašovacích údajů do aplikace.
- Python 3+ .
- Visual Studio Code nebo jiný editor kódu.
Vytvoření projektu Flask
Vytvořte složku pro hostování aplikace Flask, například flask-web-app.
Otevřete okno konzoly a pomocí příkazu přejděte do adresáře do složky webové aplikace Flask.
cd flask-web-appNastavení virtuálního prostředí
V závislosti na operačním systému spusťte následující příkazy, které nastaví virtuální prostředí a aktivuje ho:
Pro operační systém Windows:
py -m venv .venv .venv\scripts\activatePro operační systém macOS nebo Linux:
python3 -m venv .venv source .venv/bin/activate
Nainstalovat závislosti aplikace
Pokud chcete nainstalovat závislosti aplikací, spusťte následující příkazy:
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"
Knihovna ms_identity_python, kterou nainstalujete, automaticky nainstaluje knihovnu MSAL (Microsoft Authentication Library) pro Python jako její závislost. MSAL Python je knihovna, která umožňuje ověřovat uživatele a spravovat jejich přístupové tokeny.
Po instalaci požadovaných knihoven aktualizujte soubor požadavků spuštěním následujícího příkazu:
pip freeze > requirements.txt
Konfigurace aplikace pro ověřování
Webové aplikace, které přihlašují uživatele pomocí platformy Microsoft Identity Platform, se konfigurují prostřednictvím konfiguračního souboru .env. V Python Flasku musí zadat následující hodnoty:
| Proměnná prostředí | Description |
|---|---|
AUTHORITY |
Adresa URL cloudové instance, ve které je aplikace zaregistrovaná. Formát: https://{Instance}/{TenantId}. Použijte jednu z následujících hodnot instance:- https://login.microsoftonline.com/ (veřejný cloud od Azure)- https://login.microsoftonline.us/ (Azure vláda USA)- https://login.microsoftonline.de/ (Microsoft Entra Germany)- https://login.partner.microsoftonline.cn/ (Microsoft Entra China, provozovaný společností 21Vianet) |
TENANT_ID |
Identifikátor tenanta, ve kterém je aplikace zaregistrovaná. Upřednostněte ID tenanta z registrace aplikace nebo použijte některou z těchto možností: - organizations: Přihlášení uživatelů v libovolném pracovním nebo školním účtu- common: Přihlášení uživatelů pomocí libovolného pracovního nebo školního účtu nebo osobního účtu Microsoft- consumers: Přihlášení uživatelů jenom pomocí osobního účtu Microsoft |
CLIENT_ID |
Identifikátor aplikace (klienta) získaného z registrace aplikace. |
CLIENT_SECRET |
Hodnota tajného kódu získaná z přidání přihlašovacích údajů v Centru pro správu Microsoft Entra. |
REDIRECT_URI |
URL adresa, kam platforma Microsoft identity odesílá bezpečnostní tokeny po ověření. |
Aktualizace konfiguračního souboru
Vytvořte v kořenové složce soubor .env , abyste bezpečně uložili konfiguraci aplikace. Soubor .env by měl obsahovat tyto proměnné prostředí:
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>"Zástupné symboly nahraďte následujícími hodnotami:
- Nahraďte
<Enter_your_client_id>za ID aplikace (klienta) klientské webové aplikace, kterou jste zaregistrovali. - Nahraďte
<Enter_tenant_id>identifikátorem adresáře (tenanta) , kde jste zaregistrovali svou webovou aplikaci. - Nahraďte
<Enter_your_client_secret>hodnotou tajného kódu klienta pro webovou aplikaci, kterou jste vytvořili. V tomto kurzu používáme tajné kódy pro demonstrační účely. V produkčním prostředí používejte bezpečnější přístupy, jako jsou certifikáty nebo přihlašovací údaje federované identity. - Nahraďte
<Enter_redirect_uri>identifikátorem URI pro přesměrování, který jste zaregistrovali dříve. Tento návod nastaví cestu URI přesměrování nahttp://localhost:3000/getAToken.
- Nahraďte
Vytvořte soubor app_config.py pro čtení proměnných prostředí a přidejte další potřebné konfigurace.
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.
Konfigurace koncových bodů aplikace
V této fázi vytvoříte koncové body webové aplikace a přidáte do aplikace obchodní logiku.
V kořenové složce vytvořte soubor s názvem app.py.
Naimportujte požadované závislosti v horní části souboru app.py.
import os import requests from flask import Flask, render_template from identity.flask import Auth import app_configInicializujte aplikaci Flask a nakonfigurujte ji tak, aby používala typ úložiště relace, který jste zadali v souboru app_config.py.
app = Flask(__name__) app.config.from_object(app_config)Inicializujte klienta aplikace. Webová aplikace Flask je důvěrný klient. Tajný klíč klienta předáváme, protože důvěrní klienti ho můžou bezpečně uložit. Na pozadí knihovna identit volá třídu
ConfidentialClientApplicationknihovny 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"] )Přidejte požadované koncové body do aplikace Flask. Webová aplikace používá tok autorizačního kódu k přihlášení uživatele. Knihovna ms_identity_python poskytující vrstvu pro MSAL pomáhá s interakcí s knihovnou MSAL, což umožňuje snadné přidávání funkcí přihlašování a odhlašování do vaší aplikace. Přidáme indexovou stránku a chráníme ji pomocí
login_requireddekorátoru poskytovaného knihovnou ms_identity_python. Dekorátorlogin_requiredzajišťuje, že k indexové stránce mají přístup jenom ověření uživatelé.@app.route("/") @auth.login_required def index(*, context): return render_template( 'index.html', user=context['user'], title="Flask Web App Sample", )Je zaručeno, že uživatel bude přítomen, protože jsme toto zobrazení ozdobili
@login_required.
Vytvoření šablon aplikací
Vytvořte složku s názvem templates v kořenové složce. Ve složce šablon vytvořte soubor s názvem index.html. Toto je domovská stránka aplikace. Do souboru index.html přidejte následující kód:
<!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>
Spuštění a otestování ukázkové webové aplikace
V terminálu spusťte následující příkaz:
python3 -m flask run --debug --host=localhost --port=3000Můžete použít port podle svého výběru. Tento port by měl být podobný portu vaší přesměrovací URI, kterou jste zaregistrovali dříve.
Otevřete prohlížeč a přejděte na
http://localhost:3000. Zobrazí se přihlašovací stránka.Podle pokynů se přihlaste pomocí svého účtu Microsoft. Budete požádáni, abyste zadali e-mailovou adresu a heslo pro přihlášení.
Pokud aplikace potřebuje nějaké obory, zobrazí se obrazovka pro vyjádření souhlasu. Aplikace požaduje oprávnění k zachování přístupu k datům, ke které povolíte přístup a k přihlášení. Vyberte Přijmout. Tato obrazovka se nezobrazí, pokud nejsou definovány žádné obory.
Po přihlášení nebo registraci budete přesměrováni zpět na webovou aplikaci. Zobrazí se stránka, která vypadá podobně jako na následujícím snímku obrazovky:
Vyberte Odhlášení pro odhlášení z aplikace. Zobrazí se výzva k výběru účtu, ze kterém se chcete odhlásit. Vyberte účet, který jste použili k přihlášení.
Použití vlastní domény URL (volitelné)
Uživatelé Workforce nepodporují vlastní URL domény.