Opsætning af Microsoft 365-godkendelse
Ved udvikling af webapplikationer til uddannelsesformål kan integration af institutionelle ressourcer såsom Microsoft 365-e-mail forbedre brugeroplevelsen og strømline login-processer. Denne integration er især nyttig, når applikationer skal tilpasses universitetets it-politikker, hvilket kan begrænse oprettelsen af applikationer under universitetslegitimationsoplysninger.
I dette scenarie er det en praktisk løsning at bruge en personlig Microsoft Azure-konto til at konfigurere applikationen. Der kan dog opstå udfordringer, såsom problemer med lejerbegrænsninger, når du forsøger at logge på med en universitets-e-mail. Dette nødvendiggør en strategi til at administrere brugerkonti på tværs af forskellige lejere uden at kompromittere appens funktionalitet eller sikkerhed.
Kommando | Beskrivelse |
---|---|
oauth.remote_app() | Initialiserer en ny fjernapplikationsforekomst til OAuth; det bruges til at håndtere kommunikation med OAuth-udbydere. |
flask_oauthlib.client.OAuth | En Flask-udvidelse til integration af OAuth-tjenesteudbydere, hvilket gør det nemmere at godkende via OAuth-protokoller. |
authorized_response() | Denne metode er en del af Flask-OAuthlib og henter det autoriserede OAuth-svar fra tilbagekaldsfunktionen. |
session['oauth_token'] | Bruges til at gemme OAuth-tokenet i sessionen til senere adgang, afgørende for styring af brugersessioner og godkendelsestilstand. |
microsoft.authorize() | En metode, der omdirigerer til OAuth-udbyderens autorisations-URL, hvor brugeren kan godkende appen. |
url_for() | En hjælpefunktion i Flask, der genererer et slutpunkt for en given visningsfunktion. Det er nyttigt til at generere URL'er til omdirigeringer. |
Forklaring af kolbeintegrationen med Microsoft 365-godkendelse
Frontend- og backend-scripts letter sammen integrationen af Microsoft 365-login i en Flask-webapplikation. På frontenden præsenterer en simpel HTML-side en knap, der, når der klikkes på den, udløser en JavaScript-funktion til at omdirigere brugeren til backend for godkendelse. Denne proces starter med loginWithMicrosoft() funktion, som ændrer vinduesplaceringen til backend-ruten, der håndteres af Flask. Backend-scriptet bruger Flask og Flask-OAuthlib at styre OAuth-flowet med Microsofts identitetsplatform.
I bagenden er oauth.remote_app() kommandoen opretter en forbindelse til Microsofts OAuth-slutpunkter ved hjælp af applikationslegitimationsoplysninger. Det microsoft.authorize() funktionen starter godkendelsesprocessen ved at omdirigere brugeren til Microsofts autorisationsside. Når brugeren har logget på og givet de nødvendige tilladelser, sender OAuth-udbyderen dem tilbage til applikationen ved hjælp af den tilbagekalds-URL, der er angivet i url_for('authorized'). Det authorized_response() metoden behandler dette tilbagekald og henter det adgangstoken, der er nødvendigt for at bekræfte godkendelse og vedligeholde brugerens session.
Frontend Microsoft 365 Authentication Interface
HTML og JavaScript bruges til 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 Authentication Flow med Microsoft 365
Python og Flask bruges til 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)
Avanceret opsætning til Microsoft 365 Authentication in Flask
For at løse problemet med at integrere Microsoft 365-login uden at bruge en universitetsadministreret e-mail, er det vigtigt at forstå konceptet med multi-tenant-applikationer i Azure. En multi-tenant-applikation giver brugere fra flere Azure AD-lejere adgang til appen, som er ideel til universitetsindstillinger, hvor studerende kan have forskellige domæne-e-mails. Denne opsætning kræver konfiguration af Azure-applikationen til at acceptere logins fra enhver Azure AD-lejer, hvilket gøres ved at indstille 'signInAudience' i applikationsmanifestet til 'AzureADMultipleOrgs'.
Denne konfigurationsændring giver studerende mulighed for at bruge deres universitets-e-mails, selvom applikationen oprindeligt blev oprettet med en personlig e-mail. Det forenkler også administrationen, da udvikleren ikke behøver at tilføje hver bruger individuelt til lejeren. Denne tilgang udnytter fleksibiliteten i Azures identitetsadministrationstjenester for at sikre bredere tilgængelighed og problemfri integration i uddannelsesapplikationer.
Almindelige spørgsmål om Microsoft 365-integration i Flask-apps
- Hvad er Azure AD multi-tenant-godkendelse?
- Azure AD multi-tenant-godkendelse giver applikationer mulighed for at betjene brugere fra flere Azure AD-lejere, ikke kun den, hvor applikationen blev registreret.
- Hvordan konfigurerer jeg min Flask-app til Azure multi-tenant?
- Du skal ændre applikationsregistreringen i Azure for at acceptere logins fra enhver Azure AD-lejer ved at indstille 'signInAudience' i manifestet.
- Hvad er fordelene ved at bruge oauth.remote_app() i Flaske?
- Denne funktion forenkler tilslutning til OAuth-udbydere ved at administrere OAuth-flowet, inklusive token-hentning og -lagring.
- Hvorfor får en bruger muligvis en fejlmeddelelse om, at deres konto ikke findes i lejeren?
- Dette sker normalt, hvis applikationen ikke er sat op til multi-tenant-adgang, eller hvis brugeren ikke er registreret som ekstern bruger i lejeren.
- Hvordan kan jeg håndtere fejl under godkendelsesprocessen i Flask?
- Implementer fejlhåndtering i authorized_response() funktion til at fange og reagere på fejl såsom adgangsnægtelser eller manglende tokens.
Sidste tanker om Microsoft 365 Authentication Integration
Som konklusion involverer integration af Microsoft 365-login i Flask-applikationer uden brug af en universitets-e-mail opsætning af en Azure-applikation med personlige legitimationsoplysninger og konfiguration af den til adgang til flere lejere. Denne tilgang omgår ikke kun de begrænsninger, som universiteter kan pålægge at bruge officielle e-mails til oprettelse af ansøgninger, men forenkler også login-processen for brugere på tværs af forskellige lejere. Ved at følge bedste praksis for OAuth og håndtere potentielle fejl effektivt, kan udviklere give en problemfri og sikker brugeroplevelse.