Microsoft 365-verificatie instellen
Bij het ontwikkelen van webapplicaties voor educatieve doeleinden kan het integreren van institutionele bronnen zoals Microsoft 365 e-mail de gebruikerservaring verbeteren en inlogprocessen stroomlijnen. Deze integratie is met name handig wanneer applicaties moeten aansluiten bij het IT-beleid van de universiteit, wat de creatie van applicaties onder universitaire kwalificaties zou kunnen beperken.
In dit scenario is het gebruik van een persoonlijk Microsoft Azure-account om de applicatie in te stellen een praktische oplossing. Er kunnen zich echter problemen voordoen, zoals problemen met huurderbeperkingen bij pogingen om in te loggen met een universitair e-mailadres. Dit vereist een strategie om gebruikersaccounts voor verschillende tenants te beheren zonder de functionaliteit of beveiliging van de app in gevaar te brengen.
Commando | Beschrijving |
---|---|
oauth.remote_app() | Initialiseert een nieuw extern applicatie-exemplaar voor OAuth; het wordt gebruikt om de communicatie met OAuth-providers af te handelen. |
flask_oauthlib.client.OAuth | Een Flask-extensie voor het integreren van OAuth-serviceproviders, waardoor authenticatie via OAuth-protocollen eenvoudiger wordt. |
authorized_response() | Deze methode maakt deel uit van Flask-OAuthlib en haalt het geautoriseerde OAuth-antwoord op uit de callback-functie. |
session['oauth_token'] | Wordt gebruikt voor het opslaan van het OAuth-token in de sessie voor latere toegang, cruciaal voor het beheren van gebruikerssessies en de authenticatiestatus. |
microsoft.authorize() | Een methode die omleidt naar de autorisatie-URL van de OAuth-provider, waar de gebruiker de app kan autoriseren. |
url_for() | Een hulpfunctie in Flask die een eindpunt genereert voor een bepaalde weergavefunctie. Het is handig voor het genereren van URL's voor omleidingen. |
Uitleg van de Flask-integratie met Microsoft 365-authenticatie
De frontend- en backend-scripts vergemakkelijken samen de integratie van Microsoft 365-login in een Flask-webapplicatie. Op de frontend presenteert een eenvoudige HTML-pagina een knop die, wanneer erop wordt geklikt, een JavaScript-functie activeert om de gebruiker om te leiden naar de backend voor authenticatie. Dit proces begint met de loginWithMicrosoft() functie, die de vensterlocatie verandert in de backend-route die door Flask wordt afgehandeld. Het backend-script gebruikt Flask En Flask-OAuthlib om de OAuth-stroom te beheren met het identiteitsplatform van Microsoft.
In de backend wordt de oauth.remote_app() opdracht brengt een verbinding tot stand met de OAuth-eindpunten van Microsoft met behulp van toepassingsreferenties. De microsoft.authorize() functie initieert het authenticatieproces door de gebruiker om te leiden naar de autorisatiepagina van Microsoft. Nadat de gebruiker zich heeft aangemeld en de benodigde machtigingen heeft verleend, stuurt de OAuth-provider deze terug naar de applicatie met behulp van de callback-URL die is opgegeven in url_for('authorized'). De authorized_response() method verwerkt deze callback en haalt het toegangstoken op dat nodig is om de authenticatie te bevestigen en de sessie van de gebruiker te onderhouden.
Frontend Microsoft 365-authenticatie-interface
HTML en JavaScript gebruikt voor 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-verificatiestroom met Microsoft 365
Python en Flask gebruikt voor 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)
Geavanceerde installatie voor Microsoft 365-verificatie in Flask
Om het probleem van het integreren van Microsoft 365-aanmelding aan te pakken zonder gebruik te maken van een door de universiteit beheerd e-mailadres, is het essentieel om het concept van multi-tenant applicaties in Azure te begrijpen. Met een toepassing met meerdere tenants hebben gebruikers van meerdere Azure AD-tenants toegang tot de app, wat ideaal is voor universiteitsinstellingen waar studenten verschillende domein-e-mailadressen kunnen hebben. Voor deze installatie moet de Azure-toepassing worden geconfigureerd om aanmeldingen van elke Azure AD-tenant te accepteren. Dit gebeurt door de 'signInAudience' in het toepassingsmanifest in te stellen op 'AzureADMultipleOrgs'.
Door deze configuratiewijziging kunnen studenten hun universitaire e-mailadressen gebruiken, zelfs als de applicatie in eerste instantie met een persoonlijk e-mailadres is gemaakt. Het vereenvoudigt ook het beheer, omdat de ontwikkelaar niet elke gebruiker afzonderlijk aan de tenant hoeft toe te voegen. Deze aanpak maakt gebruik van de flexibiliteit van de identiteitsbeheerservices van Azure om een bredere toegankelijkheid en naadloze integratie in educatieve toepassingen te garanderen.
Veelgestelde vragen over Microsoft 365-integratie in Flask-apps
- Wat is Azure AD-verificatie met meerdere tenants?
- Met Azure AD-verificatie voor meerdere tenants kunnen toepassingen gebruikers van meerdere Azure AD-tenants bedienen, niet alleen degene waar de toepassing is geregistreerd.
- Hoe configureer ik mijn Flask-app voor Azure multi-tenant?
- U moet de toepassingsregistratie in Azure wijzigen om aanmeldingen van elke Azure AD-tenant te accepteren door 'signInAudience' in het manifest in te stellen.
- Wat zijn de voordelen van het gebruik oauth.remote_app() in fles?
- Deze functie vereenvoudigt het verbinden met OAuth-providers door de OAuth-stroom te beheren, inclusief het ophalen en opslaan van tokens.
- Waarom kan een gebruiker een foutmelding krijgen dat zijn/haar account niet bestaat in de tenant?
- Dit gebeurt meestal als de applicatie niet is ingesteld voor toegang door meerdere tenants of als de gebruiker niet als externe gebruiker in de tenant is geregistreerd.
- Hoe kan ik omgaan met fouten tijdens het authenticatieproces in Flask?
- Implementeer foutafhandeling in de authorized_response() functie om fouten op te sporen en erop te reageren, zoals toegangsweigeringen of ontbrekende tokens.
Laatste gedachten over de integratie van Microsoft 365-authenticatie
Concluderend betekent het integreren van Microsoft 365 login in Flask-applicaties zonder gebruik te maken van een universitair e-mailadres het opzetten van een Azure-applicatie met persoonlijke inloggegevens en het configureren ervan voor toegang voor meerdere tenants. Deze aanpak omzeilt niet alleen de beperkingen die universiteiten kunnen opleggen aan het gebruik van officiële e-mails voor het maken van applicaties, maar vereenvoudigt ook het inlogproces voor gebruikers van verschillende tenants. Door best practices voor OAuth te volgen en potentiële fouten effectief af te handelen, kunnen ontwikkelaars een naadloze en veilige gebruikerservaring bieden.