Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: 
Externa klienter (läs mer)
Den här handledningen beskriver hur du skyddar en Python Flask-webbapplikation.
I den här handledningen kommer du att:
- Skapa ett Python Flask-projekt
- Installera nödvändiga beroenden
- Konfigurera flaskwebbappen så att den använder Microsofts identitetsplattform för autentisering
- Testa inloggnings- och utloggningsupplevelsen i Flask-webbappen
Förutsättningar
- En hyresgäst för arbetskraft. Du kan använda din standardkatalog eller konfigurera en ny klient.
- Registrera en ny app i administrationscentret för Microsoft Entra, som endast konfigurerats för konton i den här organisationskatalogen. Mer information finns i Registrera ett program . Registrera följande värden från programöversiktssidan för senare användning:
- App-ID (klient-ID)
- Katalog-ID (hyresgäst)
- Lägg till en klienthemlighet i din appregistrering. Använd inte klienthemligheter i produktionsappar. Använd certifikat eller federerade autentiseringsuppgifter i stället. Mer information finns i lägga till autentiseringsuppgifter i ditt program.
- Python 3+.
- Visual Studio Code eller någon annan kodredigerare.
Skapa ett Flask-projekt
Skapa en mapp som värd för Flask-programmet, till exempel flask-web-app.
Öppna ett konsolfönster och byt katalog till din Flask-webbappmapp med kommandot.
cd flask-web-appSkapa virtuell miljö
Beroende på operativsystemet kör du följande kommandon för att konfigurera din virtuella miljö och aktivera den:
För Windows-operativsystemet:
py -m venv .venv .venv\scripts\activateFör macOS- eller Linux-operativsystem:
python3 -m venv .venv source .venv/bin/activate
Installera appens beroenden
Installera appberoenden genom att köra följande kommandon:
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"
Det bibliotek som du installerar, ms_identity_python, installerar automatiskt Microsoft Authentication Library (MSAL) för Python som ett beroende. MSAL Python är det bibliotek där du kan autentisera användare och hantera deras åtkomsttoken.
När du har installerat de bibliotek som krävs uppdaterar du kravfilen genom att köra följande kommando:
pip freeze > requirements.txt
Konfigurera programmet för autentisering
Webbprogram som loggar in användare med hjälp av Microsofts identitetsplattform konfigureras via en konfigurationsfil, .env. I Python Flask måste den ange följande värden:
| Miljövariabel | Description |
|---|---|
AUTHORITY |
URL:en för molninstansen där programmet är registrerat. Format: https://{Instance}/{TenantId}. Använd något av följande instansvärden:- https://login.microsoftonline.com/ (Offentligt Azure-moln)- https://login.microsoftonline.us/ (Azure US Government)- https://login.microsoftonline.de/ (Microsoft Entra Tyskland)- https://login.partner.microsoftonline.cn/ (Microsoft Entra China, som drivs av 21Vianet) |
TENANT_ID |
Identifieraren för klientorganisationen där appen är registrerad. Föredra hyrorganisations-ID:t från appregistreringen eller använd något av: - organizations: logga in användare på ett arbets- eller skolkonto- common: logga in användare med ett arbets- eller skolkonto eller ett personligt Microsoft-konto- consumers: logga endast in användare med ett personligt Microsoft-konto |
CLIENT_ID |
Identifierare för programmet (klienten) som hämtats från appregistreringen. |
CLIENT_SECRET |
Det hemliga värdet som hämtas från lägg till autentiseringsuppgifter i administrationscentret för Microsoft Entra. |
REDIRECT_URI |
URI:n där Microsofts identitetsplattform skickar säkerhetstoken efter autentisering. |
Uppdatera konfigurationsfilen
Skapa en .env-fil i rotmappen för att lagra appens konfiguration på ett säkert sätt. Filen .env ska innehålla följande miljövariabler:
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>"Ersätt platshållarna med följande värden:
- Ersätt
<Enter_your_client_id>med program-ID (klient)-ID:t för klientwebbappen som du registrerade. - Ersätt
<Enter_tenant_id>med -katalog-ID (hyresgäst) som du registrerade din webbapp i. - Ersätt
<Enter_your_client_secret>med värdet Klienthemlighet för webbappen som du skapade. I den här handledningen använder vi hemligheter i demonstrationssyfte. I produktion använder du säkrare metoder som certifikat eller federerade identitetsautentiseringsuppgifter. - Ersätt
<Enter_redirect_uri>med den omdirigerings-URI som du registrerade tidigare. I den här självstudien ställs omdirigerings-URI-sökvägen in tillhttp://localhost:3000/getAToken.
- Ersätt
Skapa en app_config.py fil för att läsa miljövariablerna och lägga till andra konfigurationer som du behöver.
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.
Konfigurera appslutpunkter
I det här skedet skapar du dina webbappslutpunkter och lägger till affärslogik i ditt program.
Skapa en fil med namnet app.py i rotmappen.
Importera nödvändiga beroenden överst i filen app.py.
import os import requests from flask import Flask, render_template from identity.flask import Auth import app_configInitiera Flask-appen och konfigurera den så att den använder den sessionslagringstyp som du angav i din app_config.py-fil.
app = Flask(__name__) app.config.from_object(app_config)Initiera klienten för appklienten. En Flask-webbapp är en konfidentiell klient. Vi skickar klienthemligheten eftersom konfidentiella klienter kan lagra den på ett säkert sätt. Under huven använder Identitetsbiblioteket MSAL-bibliotekets
ConfidentialClientApplication-klass.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"] )Lägg till de slutpunkter som krävs i Flask-appen. Webbappen använder auktoriseringskodflödet för att logga in användaren. Det ms_identity_python MSAL-omslutningsbiblioteket hjälper dig att interagera med MSAL-biblioteket, vilket gör det enklare att lägga till inloggning och logga ut till din app. Vi lägger till en indexsida och skyddar den med hjälp av
login_requireddekoratör som tillhandahålls av ms_identity_python-biblioteket. Denlogin_required-dekoratören säkerställer att endast auktoriserade användare kan komma åt indexsidan.@app.route("/") @auth.login_required def index(*, context): return render_template( 'index.html', user=context['user'], title="Flask Web App Sample", )Användaren är garanterad att vara närvarande eftersom vi har dekorerat den här vyn med
@login_required.
Skapa appmallarna
Skapa en mapp med namnet mallar i rotmappen. I mappen mallar skapar du en fil med namnet index.html. Det här är appens startsida. Lägg till följande kod i filen 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>
Köra och testa exempelwebbappen
Kör följande kommando i terminalen:
python3 -m flask run --debug --host=localhost --port=3000Du kan använda valfri port. Den här porten bör likna porten för den omdirigerings-URI som du registrerade tidigare.
Öppna webbläsaren och gå sedan till
http://localhost:3000. Du ser en inloggningssida.Logga in med ditt Microsoft-konto genom att följa stegen. Du uppmanas att ange en e-postadress och ett lösenord för att logga in.
Om det finns några omfång som krävs av programmet visas en samtyckesskärm. Programmet begär behörighet att behålla åtkomsten till data som du tillåter åtkomst till och för att logga in dig. Välj Acceptera. Den här skärmen visas inte om inga omfång har definierats.
När du har loggat in eller registrerat dig omdirigeras du tillbaka till webbappen. Du ser en sida som liknar följande skärmbild:
Välj Utloggning för att logga ut från appen. Du uppmanas att välja ett konto att logga ut från. Välj det konto som du använde för att logga in.
Använda anpassad URL-domän (valfritt)
Arbetskraftshyresgäster stöder inte anpassade URL-domäner.