Ενσωματώστε το Microsoft 365 Login στις εφαρμογές Web Flask

Python Flask OAuth

Ρύθμιση ελέγχου ταυτότητας Microsoft 365

Κατά την ανάπτυξη εφαρμογών Ιστού για εκπαιδευτικούς σκοπούς, η ενσωμάτωση θεσμικών πόρων όπως το email του Microsoft 365 μπορεί να βελτιώσει την εμπειρία του χρήστη και να βελτιστοποιήσει τις διαδικασίες σύνδεσης. Αυτή η ενοποίηση είναι ιδιαίτερα χρήσιμη όταν οι εφαρμογές πρέπει να ευθυγραμμιστούν με τις πανεπιστημιακές πολιτικές πληροφορικής, οι οποίες ενδέχεται να περιορίσουν τη δημιουργία εφαρμογών με πανεπιστημιακά διαπιστευτήρια.

Σε αυτό το σενάριο, η χρήση ενός προσωπικού λογαριασμού Microsoft Azure για τη ρύθμιση της εφαρμογής είναι μια πρακτική λύση. Ωστόσο, μπορεί να προκύψουν προκλήσεις, όπως ζητήματα με περιορισμούς ενοικιαστών όταν προσπαθείτε να συνδεθείτε με ένα πανεπιστημιακό email. Αυτό απαιτεί μια στρατηγική για τη διαχείριση των λογαριασμών χρηστών σε διαφορετικούς ενοικιαστές χωρίς να διακυβεύεται η λειτουργικότητα ή η ασφάλεια της εφαρμογής.

Εντολή Περιγραφή
oauth.remote_app() Αρχικοποιεί μια νέα απομακρυσμένη παρουσία εφαρμογής για το OAuth. χρησιμοποιείται για τη διαχείριση της επικοινωνίας με παρόχους OAuth.
flask_oauthlib.client.OAuth Μια επέκταση Flask για την ενσωμάτωση παρόχων υπηρεσιών OAuth, που διευκολύνει τον έλεγχο ταυτότητας μέσω πρωτοκόλλων OAuth.
authorized_response() Μέρος του Flask-OAuthlib, αυτή η μέθοδος ανακτά την εξουσιοδοτημένη απόκριση OAuth από τη συνάρτηση επανάκλησης.
session['oauth_token'] Χρησιμοποιείται για την αποθήκευση του διακριτικού OAuth στη συνεδρία για μεταγενέστερη πρόσβαση, κρίσιμο για τη διαχείριση περιόδων σύνδεσης χρήστη και την κατάσταση ελέγχου ταυτότητας.
microsoft.authorize() Μια μέθοδος που ανακατευθύνει στη διεύθυνση URL εξουσιοδότησης του παρόχου OAuth όπου ο χρήστης μπορεί να εξουσιοδοτήσει την εφαρμογή.
url_for() Μια βοηθητική συνάρτηση στο Flask που δημιουργεί ένα τελικό σημείο για μια δεδομένη συνάρτηση προβολής. Είναι χρήσιμο για τη δημιουργία διευθύνσεων URL για ανακατευθύνσεις.

Επεξήγηση της ενσωμάτωσης Flask με τον έλεγχο ταυτότητας Microsoft 365

Τα σενάρια frontend και backend μαζί διευκολύνουν την ενσωμάτωση της σύνδεσης του Microsoft 365 σε μια εφαρμογή Web Flask. Στη διεπαφή, μια απλή σελίδα HTML παρουσιάζει ένα κουμπί που, όταν πατηθεί, ενεργοποιεί μια συνάρτηση JavaScript για να ανακατευθύνει τον χρήστη στο backend για έλεγχο ταυτότητας. Αυτή η διαδικασία ξεκινά με το λειτουργία, η οποία αλλάζει τη θέση του παραθύρου στη διαδρομή backend που χειρίζεται το Flask. Το σενάριο υποστήριξης χρησιμοποιεί και για τη διαχείριση της ροής OAuth με την πλατφόρμα ταυτότητας της Microsoft.

Στο backend, το Η εντολή ρυθμίζει μια σύνδεση με τα τελικά σημεία OAuth της Microsoft χρησιμοποιώντας διαπιστευτήρια εφαρμογής. ο Η λειτουργία εκκινεί τη διαδικασία ελέγχου ταυτότητας ανακατευθύνοντας τον χρήστη στη σελίδα εξουσιοδότησης της Microsoft. Αφού ο χρήστης συνδεθεί και χορηγήσει τα απαραίτητα δικαιώματα, ο πάροχος OAuth τα στέλνει πίσω στην εφαρμογή χρησιμοποιώντας τη διεύθυνση URL επιστροφής κλήσης που καθορίζεται στο . ο authorized_response() Η μέθοδος επεξεργάζεται αυτήν την επιστροφή κλήσης, ανακτώντας το διακριτικό πρόσβασης που απαιτείται για την επιβεβαίωση της ταυτότητας και τη διατήρηση της συνεδρίας του χρήστη.

Διεπαφή διεπαφής ελέγχου ταυτότητας Microsoft 365

HTML και JavaScript που χρησιμοποιούνται για το frontend

<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 με το Microsoft 365

Python και Flask που χρησιμοποιούνται για backend

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)

Σύνθετη εγκατάσταση για έλεγχο ταυτότητας Microsoft 365 στο Flask

Για να αντιμετωπιστεί το ζήτημα της ενσωμάτωσης σύνδεσης στο Microsoft 365 χωρίς τη χρήση ηλεκτρονικού ταχυδρομείου που διαχειρίζεται το πανεπιστήμιο, είναι απαραίτητο να κατανοήσουμε την έννοια των εφαρμογών πολλαπλών ενοικιαστών στο Azure. Μια εφαρμογή πολλαπλών ενοικιαστών επιτρέπει σε χρήστες από πολλούς ενοικιαστές Azure AD να έχουν πρόσβαση στην εφαρμογή, η οποία είναι ιδανική για πανεπιστημιακές ρυθμίσεις όπου οι φοιτητές μπορεί να έχουν διαφορετικά emails τομέα. Αυτή η ρύθμιση απαιτεί τη διαμόρφωση της εφαρμογής Azure ώστε να δέχεται συνδέσεις από οποιονδήποτε μισθωτή Azure AD, η οποία πραγματοποιείται ορίζοντας το "signInAudience" στο μανιφέστο εφαρμογής σε "AzureADMultipleOrgs".

Αυτή η αλλαγή διαμόρφωσης επιτρέπει στους φοιτητές να χρησιμοποιούν τα email του πανεπιστημίου τους, ακόμα κι αν η εφαρμογή δημιουργήθηκε αρχικά με προσωπικό email. Απλοποιεί επίσης τη διαχείριση, καθώς ο προγραμματιστής δεν χρειάζεται να προσθέτει ξεχωριστά κάθε χρήστη στον μισθωτή. Αυτή η προσέγγιση αξιοποιεί την ευελιξία των υπηρεσιών διαχείρισης ταυτότητας του Azure για να εξασφαλίσει ευρύτερη προσβασιμότητα και απρόσκοπτη ενσωμάτωση σε εκπαιδευτικές εφαρμογές.

  1. Τι είναι ο έλεγχος ταυτότητας πολλαπλών ενοικιαστών Azure AD;
  2. Ο έλεγχος ταυτότητας πολλαπλών ενοικιαστών Azure AD επιτρέπει σε εφαρμογές να εξυπηρετούν χρήστες από πολλούς ενοικιαστές Azure AD, όχι μόνο από εκείνον όπου έχει καταχωρηθεί η εφαρμογή.
  3. Πώς μπορώ να διαμορφώσω την εφαρμογή Flask για Azure multi-tenant;
  4. Πρέπει να τροποποιήσετε την εγγραφή της εφαρμογής στο Azure για να αποδεχτείτε τις συνδέσεις από οποιονδήποτε μισθωτή Azure AD ορίζοντας το 'signInAudience' στο μανιφέστο.
  5. Ποια είναι τα οφέλη από τη χρήση στο Flask;
  6. Αυτή η λειτουργία απλοποιεί τη σύνδεση με παρόχους OAuth διαχειριζόμενος τη ροή OAuth, συμπεριλαμβανομένης της ανάκτησης και αποθήκευσης διακριτικών.
  7. Γιατί μπορεί ένας χρήστης να λάβει ένα σφάλμα δηλώνοντας ότι ο λογαριασμός του δεν υπάρχει στον ενοικιαστή;
  8. Αυτό συμβαίνει συνήθως εάν η εφαρμογή δεν έχει ρυθμιστεί για πρόσβαση πολλών ενοικιαστών ή εάν ο χρήστης δεν έχει εγγραφεί ως εξωτερικός χρήστης στον ενοικιαστή.
  9. Πώς μπορώ να χειριστώ σφάλματα κατά τη διαδικασία ελέγχου ταυτότητας στο Flask;
  10. Εφαρμογή διαχείρισης σφαλμάτων στο λειτουργία για να συλλάβει και να απαντήσει σε σφάλματα όπως αρνήσεις πρόσβασης ή ελλείποντα διακριτικά.

Συμπερασματικά, η ενσωμάτωση της σύνδεσης του Microsoft 365 σε εφαρμογές Flask χωρίς τη χρήση ηλεκτρονικού ταχυδρομείου πανεπιστημίου περιλαμβάνει τη ρύθμιση μιας εφαρμογής Azure με προσωπικά διαπιστευτήρια και τη διαμόρφωσή της για πρόσβαση πολλών ενοικιαστών. Αυτή η προσέγγιση όχι μόνο παρακάμπτει τους περιορισμούς που ενδέχεται να επιβάλλουν τα πανεπιστήμια στη χρήση επίσημων μηνυμάτων ηλεκτρονικού ταχυδρομείου για τη δημιουργία εφαρμογών, αλλά επίσης απλοποιεί τη διαδικασία σύνδεσης για τους χρήστες σε διαφορετικούς ενοικιαστές. Ακολουθώντας τις βέλτιστες πρακτικές για το OAuth και αντιμετωπίζοντας τα πιθανά σφάλματα αποτελεσματικά, οι προγραμματιστές μπορούν να παρέχουν μια απρόσκοπτη και ασφαλή εμπειρία χρήστη.