Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: Arbeitsgruppenmandanten
Externe Mandanten (weitere Informationen)
In diesem Tutorial erfahren Sie, wie Sie eine Python-Flask-Web-App sichern.
In diesem Tutorial erfahren Sie:
- Erstellen eines Python-Flask-Projekts
- Installieren der erforderlichen Abhängigkeiten
- Konfigurieren Sie Ihre Flask-Web-App für die Verwendung von Microsoft Identity Platform für die Authentifizierung
- Testen Sie die An- und Abmeldung in Ihrer Flask-Web-App
Voraussetzungen
- Ein Mandant für Mitarbeitende. Sie können Ihr Standardverzeichnis verwenden oder einen neuen Mandanten einrichten.
- Registrieren Sie eine neue App im Microsoft Entra Admin Center, die nur für Konten in diesem Organisationsverzeichnis konfiguriert ist. Weitere Informationen finden Sie unter Registrieren einer Anwendung . Notieren Sie die folgenden Werte auf der Anwendungsübersichtsseite für die spätere Verwendung:
- Anwendungs-ID (Client)
- Verzeichnis-ID (Mandant)
- Fügen Sie Ihrer App-Registrierung einen geheimen Clientschlüssel hinzu. Verwenden Sie keine Client-Geheimnisse in Produktionsanwendungen. Verwenden Sie stattdessen Zertifikate oder Verbundanmeldeinformationen. Weitere Informationen finden Sie unter Hinzufügen von Anmeldeinformationen zu Ihrer Anwendung.
- Python 3+.
- Visual Studio Code oder ein anderer Code-Editor.
Erstellen eines Flask-Projekts
Erstellen Sie einen Ordner zum Hosten Ihrer Flask-Anwendung, z. B. flask-web-app.
Öffnen Sie ein Konsolenfenster und wechseln Sie mit dem Befehl
cd flask-web-app
Einrichten einer virtuellen Umgebung
Führen Sie je nach Betriebssystem die folgenden Befehle aus, um Ihre virtuelle Umgebung einzurichten und zu aktivieren:
Für Windows-Betriebssysteme:
py -m venv .venv .venv\scripts\activate
Für macOS- oder Linux-Betriebssysteme:
python3 -m venv .venv source .venv/bin/activate
Installieren von App-Abhängigkeiten
Führen Sie die folgenden Befehle aus, um App-Abhängigkeiten zu installieren:
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"
Die ms_identity_python Bibliothek, die Sie installieren, installiert automatisch die Microsoft Authentication Library (MSAL) für Python als Abhängigkeit. MSAL Python ist die Bibliothek, mit der Sie Benutzer authentifizieren und ihre Zugriffstoken verwalten können.
Aktualisieren Sie nach der Installation der erforderlichen Bibliotheken Ihre Anforderungsdatei, indem Sie den folgenden Befehl ausführen:
pip freeze > requirements.txt
Fügen Sie Ihre Konfigurationen hinzu
Erstellen Sie eine .env*-Datei in Ihrem Stammordner, um die Konfiguration Ihrer App sicher zu speichern. Ihre .env-Datei sollte die folgenden Umgebungsvariablen enthalten:
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>"
Ersetzen Sie die Platzhalter durch die folgenden Werte:
- Ersetzen Sie
<Enter_your_client_id>
sie durch die Anwendungs-ID (Client-ID) der Client-Web-App, die Sie registriert haben. - Ersetzen Sie
<Enter_tenant_id>
sie durch die Verzeichnis-ID (Mandanten), in der Sie Ihre Web-App registriert haben. - Ersetzen Sie
<Enter_your_client_secret>
ihn durch den Wert des geheimen Clientschlüssels für die Web-App, die Sie erstellt haben. In diesem Tutorial verwenden wir Geheimnisse zu Demonstrationszwecken. Verwenden Sie in der Produktion sicherere Ansätze wie Zertifikate oder Anmeldeinformationen für Verbundidentitäten. - Ersetzen Sie ihn durch den Umleitungs-URI
<Enter_redirect_uri>
, den Sie zuvor registriert haben. In diesem Tutorial wird der Umleitungs-URI-Pfad aufhttp://localhost:3000/getAToken
festgelegt.
- Ersetzen Sie
Erstellen Sie eine app_config.py Datei, um die Umgebungsvariablen zu lesen und weitere Konfigurationen hinzuzufügen, die Sie benötigen.
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.
Konfigurieren von App-Endpunkten
In dieser Phase erstellen Sie Ihre Web-App-Endpunkte und fügen Ihrer Anwendung die Geschäftslogik hinzu.
Erstellen Sie eine Datei mit dem Namen app.py in Ihrem Stammordner.
Importieren Sie die erforderlichen Abhängigkeiten am Anfang der app.py Datei.
import os import requests from flask import Flask, render_template from identity.flask import Auth import app_config
Initialisieren Sie Ihre Flask-App, und konfigurieren Sie sie so, dass sie den Sitzungsspeichertyp verwendet, den Sie in Ihrer app_config.py Datei angegeben haben.
app = Flask(__name__) app.config.from_object(app_config)
Initialisieren Sie den Client, den App-Client. Eine Flask-Web-App ist ein vertraulicher Client. Wir übergeben den geheimen Clientschlüssel, da vertrauliche Clients ihn sicher speichern können. Unter der Haube ruft die Identitätsbibliothek die
ConfidentialClientApplication
Klasse der MSAL-Bibliothek auf.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"] )
Fügen Sie Ihrer Flask-App die erforderlichen Endpunkte hinzu. Die Web-App verwendet den Autorisierungscodeflow, um den Benutzer anzumelden. Die ms_identity_python MSAL-Wrapperbibliothek hilft bei der Interaktion mit der MSAL-Bibliothek und erleichtert so das Hinzufügen von An- und Abmeldungen zu Ihrer App. Wir fügen eine Indexseite hinzu und schützen sie mit dem Decorator, der
login_required
von der ms_identity_python Bibliothek bereitgestellt wird. Derlogin_required
Decorator stellt sicher, dass nur authentifizierte Benutzer auf die Indexseite zugreifen können.@app.route("/") @auth.login_required def index(*, context): return render_template( 'index.html', user=context['user'], title="Flask Web App Sample", )
Der Benutzer ist garantiert anwesend, da wir diese Ansicht mit
@login_required
.
Erstellen der App-Vorlagen
Erstellen Sie in Ihrem Stammordner einen Ordner mit dem Namen templates . Erstellen Sie im Vorlagenordner eine Datei mit dem Namen index.html. Dies ist die Startseite der App. Fügen Sie der index.html Datei den folgenden Code hinzu:
<!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>
Ausführen und Testen der Beispielweb-App
Führen Sie in Ihrem Terminal den folgenden Befehl aus:
python3 -m flask run --debug --host=localhost --port=3000
Sie können den Port Ihrer Wahl verwenden. Dieser Port sollte dem Port des Umleitungs-URI ähneln, den Sie zuvor registriert haben.
Öffnen Sie Ihren Browser, und wechseln Sie dann zu
http://localhost:3000
. Sie sehen eine Anmeldeseite.Melden Sie sich mit Ihrem Microsoft-Konto an, indem Sie die folgenden Schritte ausführen. Sie werden aufgefordert, eine E-Mail-Adresse und ein Passwort anzugeben, um sich anzumelden.
Wenn für die Anwendung Bereiche erforderlich sind, wird ein Zustimmungsbildschirm angezeigt. Die Anwendung fordert die Berechtigung an, den Zugriff auf die Daten, auf die Sie Zugriff gewähren, aufrechtzuerhalten und Sie anzumelden. Wählen Sie Akzeptieren aus. Dieser Bildschirm wird nicht angezeigt, wenn keine Bereiche definiert sind.
Nachdem Sie sich angemeldet oder registriert haben, werden Sie zurück zur Web-App umgeleitet. Sie sehen eine Seite, die ähnlich wie im folgenden Screenshot aussieht:
Wählen Sie Abmelden aus, um sich von der App abzumelden. Sie werden aufgefordert, ein Konto für die Abmeldung zu wählen. Wählen Sie das Konto aus, das Sie zum Anmelden verwendet haben.
Verwenden einer benutzerdefinierten URL-Domäne (optional)
Workforce-Mandanten unterstützen keine benutzerdefinierten URL-Domänen.