Einrichten der Microsoft 365-Authentifizierung
Bei der Entwicklung von Webanwendungen für Bildungszwecke kann die Integration institutioneller Ressourcen wie Microsoft 365-E-Mail das Benutzererlebnis verbessern und Anmeldeprozesse optimieren. Diese Integration ist besonders nützlich, wenn Anwendungen an die IT-Richtlinien der Universität angepasst werden müssen, was die Erstellung von Anwendungen mit Universitätsberechtigungen einschränken könnte.
In diesem Szenario ist die Verwendung eines persönlichen Microsoft Azure-Kontos zum Einrichten der Anwendung eine praktische Lösung. Es kann jedoch zu Herausforderungen kommen, beispielsweise zu Problemen mit Mieterbeschränkungen beim Versuch, sich mit einer Universitäts-E-Mail-Adresse anzumelden. Dies erfordert eine Strategie zur Verwaltung von Benutzerkonten über verschiedene Mandanten hinweg, ohne die Funktionalität oder Sicherheit der App zu beeinträchtigen.
Befehl | Beschreibung |
---|---|
oauth.remote_app() | Initialisiert eine neue Remote-Anwendungsinstanz für OAuth; Es wird für die Kommunikation mit OAuth-Anbietern verwendet. |
flask_oauthlib.client.OAuth | Eine Flask-Erweiterung zur Integration von OAuth-Dienstanbietern, die die Authentifizierung über OAuth-Protokolle erleichtert. |
authorized_response() | Diese Methode ist Teil von Flask-OAuthlib und ruft die autorisierte OAuth-Antwort von der Rückruffunktion ab. |
session['oauth_token'] | Wird zum Speichern des OAuth-Tokens in der Sitzung für den späteren Zugriff verwendet, was für die Verwaltung von Benutzersitzungen und den Authentifizierungsstatus von entscheidender Bedeutung ist. |
microsoft.authorize() | Eine Methode, die zur Autorisierungs-URL des OAuth-Anbieters umleitet, wo der Benutzer die App autorisieren kann. |
url_for() | Eine Hilfsfunktion in Flask, die einen Endpunkt für eine bestimmte Ansichtsfunktion generiert. Es ist nützlich zum Generieren von URLs für Weiterleitungen. |
Erläutern der Flask-Integration mit der Microsoft 365-Authentifizierung
Die Frontend- und Backend-Skripte erleichtern zusammen die Integration der Microsoft 365-Anmeldung in eine Flask-Webanwendung. Auf dem Frontend stellt eine einfache HTML-Seite eine Schaltfläche dar, die beim Klicken eine JavaScript-Funktion auslöst, um den Benutzer zur Authentifizierung zum Backend umzuleiten. Dieser Prozess beginnt mit dem loginWithMicrosoft() Funktion, die die Fensterposition in die von Flask verarbeitete Backend-Route ändert. Das Backend-Skript verwendet Flask Und Flask-OAuthlib um den OAuth-Fluss mit der Identitätsplattform von Microsoft zu verwalten.
Im Backend wird die oauth.remote_app() Der Befehl stellt mithilfe von Anwendungsanmeldeinformationen eine Verbindung mit den OAuth-Endpunkten von Microsoft her. Der microsoft.authorize() Die Funktion initiiert den Authentifizierungsprozess, indem sie den Benutzer zur Autorisierungsseite von Microsoft umleitet. Nachdem sich der Benutzer angemeldet und die erforderlichen Berechtigungen erteilt hat, sendet der OAuth-Anbieter ihn mithilfe der in angegebenen Rückruf-URL an die Anwendung zurück url_for('authorized'). Der authorized_response() Die Methode verarbeitet diesen Rückruf und ruft das Zugriffstoken ab, das zur Bestätigung der Authentifizierung und zur Aufrechterhaltung der Benutzersitzung erforderlich ist.
Frontend-Microsoft-365-Authentifizierungsschnittstelle
HTML und JavaScript werden für das Frontend verwendet
<html>
<head>
<title>Login with Microsoft</title>
</head>
<body>
<button onclick="loginWithMicrosoft()">Sign In with Microsoft</button>
<script>
function loginWithMicrosoft() {
window.location.href = '/auth/microsoft';
}
</script>
</body>
</html>
Backend-Authentifizierungsfluss mit Microsoft 365
Python und Flask werden für das Backend verwendet
from flask import Flask, redirect, url_for, session
from flask_oauthlib.client import OAuth
import os
app = Flask(__name__)
app.secret_key = 'development'
oauth = OAuth(app)
microsoft = oauth.remote_app(
'microsoft',
consumer_key='YOUR_APP_ID',
consumer_secret='YOUR_APP_SECRET',
request_token_params={'scope': 'User.Read'}
base_url='https://graph.microsoft.com/v1.0/',
request_token_url=None,
access_token_method='POST',
access_token_url='https://login.microsoftonline.com/common/oauth2/v2.0/token',
authorize_url='https://login.microsoftonline.com/common/oauth2/v2.0/authorize'
)
@app.route('/')
def index():
return '<h1>Welcome to the Flask App</h1>' + '<a href="/login">Login with Microsoft</a>'
@app.route('/login')
def login():
return microsoft.authorize(callback=url_for('authorized', _external=True))
@app.route('/login/authorized')
def authorized():
response = microsoft.authorized_response()
if response is None or response.get('access_token') is None:
return 'Access denied: reason={0} error={1}'.format(
request.args['error'], request.args['error_description'])
session['oauth_token'] = (response['access_token'], '')
return 'Logged in as id={0}'.format(session['oauth_token'])
@microsoft.tokengetter
def get_microsoft_oauth_token():
return session.get('oauth_token')
if __name__ == '__main__':
app.run(debug=True)
Erweitertes Setup für die Microsoft 365-Authentifizierung in Flask
Um das Problem der Integration der Microsoft 365-Anmeldung ohne Verwendung einer von der Universität verwalteten E-Mail-Adresse zu lösen, ist es wichtig, das Konzept von mandantenfähigen Anwendungen in Azure zu verstehen. Eine mandantenfähige Anwendung ermöglicht Benutzern aus mehreren Azure AD-Mandanten den Zugriff auf die App. Dies ist ideal für Universitätsumgebungen, in denen Studenten möglicherweise unterschiedliche Domänen-E-Mail-Adressen haben. Für dieses Setup muss die Azure-Anwendung so konfiguriert werden, dass sie Anmeldungen von jedem Azure AD-Mandanten akzeptiert. Dies erfolgt durch Festlegen von „signInAudience“ im Anwendungsmanifest auf „AzureADMultipleOrgs“.
Durch diese Konfigurationsänderung können Studierende ihre Universitäts-E-Mails verwenden, auch wenn die Bewerbung ursprünglich mit einer persönlichen E-Mail-Adresse erstellt wurde. Es vereinfacht auch die Verwaltung, da der Entwickler nicht jeden Benutzer einzeln zum Mandanten hinzufügen muss. Dieser Ansatz nutzt die Flexibilität der Identitätsverwaltungsdienste von Azure, um eine breitere Zugänglichkeit und nahtlose Integration in Bildungsanwendungen sicherzustellen.
Häufige Fragen zur Microsoft 365-Integration in Flask Apps
- Was ist die mehrinstanzenfähige Azure AD-Authentifizierung?
- Mit der mehrinstanzenfähigen Azure AD-Authentifizierung können Anwendungen Benutzer von mehreren Azure AD-Mandanten bedienen, nicht nur von dem, bei dem die Anwendung registriert wurde.
- Wie konfiguriere ich meine Flask-App für Azure Multi-Tenant?
- Sie müssen die Anwendungsregistrierung in Azure ändern, um Anmeldungen von jedem Azure AD-Mandanten zu akzeptieren, indem Sie „signInAudience“ im Manifest festlegen.
- Welche Vorteile bietet die Verwendung? oauth.remote_app() im Kolben?
- Diese Funktion vereinfacht die Verbindung zu OAuth-Anbietern durch die Verwaltung des OAuth-Flusses, einschließlich Token-Abruf und -Speicherung.
- Warum erhält ein Benutzer möglicherweise eine Fehlermeldung, die besagt, dass sein Konto im Mandanten nicht vorhanden ist?
- Dies tritt normalerweise auf, wenn die Anwendung nicht für den mandantenfähigen Zugriff eingerichtet ist oder wenn der Benutzer nicht als externer Benutzer im Mandanten registriert ist.
- Wie kann ich Fehler während des Authentifizierungsprozesses in Flask behandeln?
- Implementieren Sie die Fehlerbehandlung im authorized_response() Funktion zum Abfangen und Reagieren auf Fehler wie Zugriffsverweigerungen oder fehlende Token.
Abschließende Gedanken zur Microsoft 365-Authentifizierungsintegration
Zusammenfassend lässt sich sagen, dass die Integration der Microsoft 365-Anmeldung in Flask-Anwendungen ohne Verwendung einer Universitäts-E-Mail die Einrichtung einer Azure-Anwendung mit persönlichen Anmeldeinformationen und deren Konfiguration für den mandantenfähigen Zugriff erfordert. Dieser Ansatz umgeht nicht nur die Einschränkungen, die Universitäten bei der Verwendung offizieller E-Mails für die Bewerbungserstellung auferlegen könnten, sondern vereinfacht auch den Anmeldevorgang für Benutzer verschiedener Mandanten. Durch die Befolgung von Best Practices für OAuth und den effektiven Umgang mit potenziellen Fehlern können Entwickler ein nahtloses und sicheres Benutzererlebnis bieten.