Postavljanje Microsoft 365 autentifikacije
Prilikom razvoja web aplikacija u obrazovne svrhe, integracija institucionalnih resursa kao što je Microsoft 365 e-pošta može poboljšati korisničko iskustvo i pojednostaviti procese prijave. Ova je integracija posebno korisna kada se aplikacije moraju uskladiti s IT politikama sveučilišta, što može ograničiti stvaranje aplikacija pod vjerodajnicama sveučilišta.
U ovom je scenariju korištenje osobnog Microsoft Azure računa za postavljanje aplikacije praktično rješenje. Međutim, mogu se pojaviti izazovi, kao što su problemi s ograničenjima stanara kada se pokušavate prijaviti putem sveučilišne e-pošte. To zahtijeva strategiju za upravljanje korisničkim računima među različitim zakupcima bez ugrožavanja funkcionalnosti ili sigurnosti aplikacije.
Naredba | Opis |
---|---|
oauth.remote_app() | Inicijalizira novu instancu udaljene aplikacije za OAuth; koristi se za upravljanje komunikacijom s pružateljima OAuth. |
flask_oauthlib.client.OAuth | Flask proširenje za integraciju pružatelja OAuth usluga, što olakšava autentifikaciju putem OAuth protokola. |
authorized_response() | Dio Flask-OAuthliba, ova metoda dohvaća ovlašteni OAuth odgovor iz funkcije povratnog poziva. |
session['oauth_token'] | Koristi se za pohranjivanje OAuth tokena u sesiju za kasniji pristup, ključno za upravljanje korisničkim sesijama i stanjem autentifikacije. |
microsoft.authorize() | Metoda koja preusmjerava na autorizacijski URL pružatelja OAutha gdje korisnik može autorizirati aplikaciju. |
url_for() | Pomoćna funkcija u Flasku koja generira krajnju točku za danu funkciju prikaza. Korisno je za generiranje URL-ova za preusmjeravanja. |
Objašnjenje integracije Flaska s Microsoft 365 autentifikacijom
Frontend i backend skripte zajedno olakšavaju integraciju Microsoft 365 prijave u Flask web aplikaciju. Na sučelju, jednostavna HTML stranica predstavlja gumb koji, kada se klikne, pokreće JavaScript funkciju za preusmjeravanje korisnika na pozadinu radi provjere autentičnosti. Ovaj proces počinje s loginWithMicrosoft() funkcija, koja mijenja lokaciju prozora u pozadinsku rutu kojom upravlja Flask. Pozadinska skripta koristi Flask i Flask-OAuthlib za upravljanje protokom OAuth s Microsoftovom platformom identiteta.
U pozadini, oauth.remote_app() naredba postavlja vezu s Microsoftovim OAuth krajnjim točkama pomoću vjerodajnica aplikacije. The microsoft.authorize() pokreće postupak provjere autentičnosti preusmjeravanjem korisnika na Microsoftovu stranicu za autorizaciju. Nakon što se korisnik prijavi i dodijeli potrebna dopuštenja, OAuth pružatelj ih šalje natrag u aplikaciju pomoću URL-a povratnog poziva navedenog u url_for('authorized'). The authorized_response() metoda obrađuje ovaj povratni poziv, dohvaćajući pristupni token potreban za potvrdu autentifikacije i održavanje korisničke sesije.
Frontend Microsoft 365 Authentication Interface
HTML i JavaScript koji se koriste za sučelje
<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>
Tijek pozadinske provjere autentičnosti s Microsoft 365
Python i Flask korišteni kao 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)
Napredno postavljanje za autentifikaciju Microsoft 365 u Flasku
Da biste riješili problem integracije Microsoft 365 prijave bez korištenja e-pošte kojom upravlja sveučilište, bitno je razumjeti koncept aplikacija s više korisnika u Azureu. Aplikacija s više zakupaca omogućuje korisnicima iz više Azure AD zakupaca da pristupe aplikaciji, što je idealno za sveučilišne postavke gdje studenti mogu imati različite adrese e-pošte u domeni. Ova postavka zahtijeva konfiguriranje aplikacije Azure za prihvaćanje prijava od bilo kojeg stanara Azure AD, što se postiže postavljanjem 'signInAudience' u manifestu aplikacije na 'AzureADMultipleOrgs'.
Ova promjena konfiguracije omogućuje studentima korištenje svoje sveučilišne e-pošte, čak i ako je aplikacija inicijalno stvorena s osobnom e-poštom. Također pojednostavljuje upravljanje budući da razvojni programer ne treba pojedinačno dodavati svakog korisnika zakupcu. Ovaj pristup iskorištava fleksibilnost Azureovih usluga upravljanja identitetom kako bi se osigurala šira dostupnost i besprijekorna integracija u obrazovne aplikacije.
Uobičajena pitanja o integraciji Microsoft 365 u Flask Apps
- Što je provjera autentičnosti više korisnika Azure AD?
- Azure AD provjera autentičnosti više zakupaca omogućuje aplikacijama da poslužuju korisnike iz više Azure AD zakupaca, a ne samo onog na kojem je aplikacija registrirana.
- Kako mogu konfigurirati svoju aplikaciju Flask za Azure multi-tenant?
- Morate izmijeniti registraciju aplikacije u Azureu da biste prihvatili prijave od bilo kojeg stanara Azure AD postavljanjem 'signInAudience' u manifestu.
- Koje su prednosti korištenja oauth.remote_app() u Flasku?
- Ova funkcija pojednostavljuje povezivanje s OAuth davateljima upravljanjem OAuth protokom, uključujući dohvaćanje tokena i pohranu.
- Zašto bi korisnik mogao dobiti pogrešku da njegov račun ne postoji u zakupcu?
- To se obično događa ako aplikacija nije postavljena za pristup s više zakupaca ili ako korisnik nije registriran kao vanjski korisnik u zakupcu.
- Kako mogu riješiti pogreške tijekom procesa provjere autentičnosti u Flasku?
- Implementirajte obradu pogrešaka u authorized_response() funkcija za hvatanje i reagiranje na pogreške kao što su odbijanje pristupa ili nedostajući tokeni.
Završne misli o integraciji provjere autentičnosti Microsoft 365
Zaključno, integracija Microsoft 365 prijave u Flask aplikacije bez korištenja sveučilišne e-pošte uključuje postavljanje Azure aplikacije s osobnim vjerodajnicama i njezino konfiguriranje za pristup s više korisnika. Ovaj pristup ne samo da zaobilazi ograničenja koja bi sveučilišta mogla nametnuti u korištenju službene e-pošte za kreiranje aplikacija, već i pojednostavljuje postupak prijave za korisnike preko različitih zakupaca. Slijedeći najbolje prakse za OAuth i učinkovito rješavajući moguće pogreške, programeri mogu pružiti besprijekorno i sigurno korisničko iskustvo.