Integrujte přihlášení k Microsoft 365 do Flask Web Apps

Integrujte přihlášení k Microsoft 365 do Flask Web Apps
Integrujte přihlášení k Microsoft 365 do Flask Web Apps

Nastavení ověřování Microsoft 365

Při vývoji webových aplikací pro vzdělávací účely může integrace institucionálních zdrojů, jako je e-mail Microsoft 365, zlepšit uživatelské prostředí a zefektivnit procesy přihlašování. Tato integrace je zvláště užitečná, když se aplikace potřebují sladit s univerzitními IT politikami, což může omezit vytváření aplikací pod univerzitními přihlašovacími údaji.

V tomto scénáři je praktickým řešením použití osobního účtu Microsoft Azure k nastavení aplikace. Mohou však nastat problémy, jako jsou problémy s omezeními nájemců při pokusu o přihlášení pomocí univerzitního e-mailu. To vyžaduje strategii správy uživatelských účtů napříč různými tenanty, aniž by byla ohrožena funkčnost nebo zabezpečení aplikace.

Příkaz Popis
oauth.remote_app() Inicializuje novou instanci vzdálené aplikace pro OAuth; slouží ke komunikaci s poskytovateli OAuth.
flask_oauthlib.client.OAuth Rozšíření Flask pro integraci poskytovatelů služeb OAuth, které usnadňuje ověřování pomocí protokolů OAuth.
authorized_response() Tato metoda, která je součástí Flask-OAuthlib, získává autorizovanou odpověď OAuth z funkce zpětného volání.
session['oauth_token'] Používá se k ukládání tokenu OAuth v relaci pro pozdější přístup, což je důležité pro správu uživatelských relací a stavu ověřování.
microsoft.authorize() Metoda, která přesměrovává na autorizační adresu URL poskytovatele OAuth, kde může uživatel aplikaci autorizovat.
url_for() Pomocná funkce ve Flasku, která generuje koncový bod pro danou funkci zobrazení. Je to užitečné pro generování URL pro přesměrování.

Vysvětlení integrace Flask s Microsoft 365 Authentication

Frontendové a backendové skripty společně usnadňují integraci přihlášení k Microsoft 365 do webové aplikace Flask. Na frontendu představuje jednoduchá HTML stránka tlačítko, které po kliknutí spustí funkci JavaScriptu, která přesměruje uživatele na backend za účelem ověření. Tento proces začíná loginWithMicrosoft() funkce, která změní umístění okna na backendovou cestu spravovanou Flask. Backendový skript používá Flask a Flask-OAuthlib ke správě toku OAuth pomocí platformy identity společnosti Microsoft.

V backendu, oauth.remote_app() příkaz nastaví spojení s koncovými body OAuth společnosti Microsoft pomocí přihlašovacích údajů aplikace. The microsoft.authorize() Funkce zahájí proces ověřování přesměrováním uživatele na autorizační stránku společnosti Microsoft. Poté, co se uživatel přihlásí a udělí potřebná oprávnění, je poskytovatel OAuth odešle zpět do aplikace pomocí adresy URL pro zpětné volání uvedené v url_for('authorized'). The authorized_response() metoda zpracuje toto zpětné volání a načte přístupový token potřebný k potvrzení autentizace a udržení relace uživatele.

Frontendové rozhraní pro ověřování Microsoft 365

HTML a JavaScript používaný pro 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>

Tok ověřování backendu s Microsoft 365

Python a Flask používané pro 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)

Pokročilé nastavení pro Microsoft 365 Authentication ve Flasku

Chcete-li vyřešit problém s integrací přihlášení k Microsoft 365 bez použití univerzitně spravovaného e-mailu, je nezbytné porozumět konceptu aplikací pro více tenantů v Azure. Aplikace pro více tenantů umožňuje uživatelům z více tenantů Azure AD přístup k aplikaci, což je ideální pro univerzitní nastavení, kde mohou mít studenti různé e-maily v doméně. Toto nastavení vyžaduje konfiguraci aplikace Azure tak, aby přijímala přihlášení od libovolného tenanta Azure AD, což se provádí nastavením „signInAudience“ v manifestu aplikace na „AzureADMultipleOrgs“.

Tato změna konfigurace umožňuje studentům používat své univerzitní e-maily, i když byla aplikace původně vytvořena pomocí osobního e-mailu. Také to zjednodušuje správu, protože vývojář nemusí jednotlivě přidávat každého uživatele do tenanta. Tento přístup využívá flexibilitu služeb Azure pro správu identit k zajištění širší dostupnosti a bezproblémové integrace ve vzdělávacích aplikacích.

Běžné otázky o integraci Microsoft 365 ve Flask Apps

  1. Co je ověřování více tenantů Azure AD?
  2. Ověřování více tenantů Azure AD umožňuje aplikacím obsluhovat uživatele z více tenantů Azure AD, nejen z toho, kde byla aplikace zaregistrována.
  3. Jak nakonfiguruji svou aplikaci Flask pro více tenantů Azure?
  4. Chcete-li přijímat přihlášení od libovolného tenanta Azure AD, musíte upravit registraci aplikace v Azure nastavením „signInAudience“ v manifestu.
  5. Jaké jsou výhody používání oauth.remote_app() v baňce?
  6. Tato funkce zjednodušuje připojení k poskytovatelům OAuth správou toku OAuth, včetně načítání a ukládání tokenů.
  7. Proč se může uživateli zobrazit chyba oznamující, že jeho účet v tenantovi neexistuje?
  8. K tomu obvykle dochází, pokud aplikace není nastavena pro přístup pro více tenantů nebo pokud uživatel není v tenantovi registrován jako externí uživatel.
  9. Jak mohu zvládnout chyby během procesu ověřování ve Flasku?
  10. Implementujte zpracování chyb v authorized_response() funkci zachytit a reagovat na chyby, jako je odmítnutí přístupu nebo chybějící tokeny.

Závěrečné úvahy o integraci ověřování Microsoft 365

Závěrem lze říci, že integrace přihlášení k Microsoft 365 do aplikací Flask bez použití univerzitního e-mailu zahrnuje nastavení aplikace Azure s osobními přihlašovacími údaji a její konfiguraci pro přístup pro více tenantů. Tento přístup nejenže obchází omezení, která mohou univerzity uvalit na používání oficiálních e-mailů pro vytváření aplikací, ale také zjednodušuje proces přihlašování pro uživatele napříč různými nájemci. Dodržováním osvědčených postupů pro OAuth a efektivním zpracováním potenciálních chyb mohou vývojáři poskytovat bezproblémové a bezpečné uživatelské prostředí.