Integruokite „Microsoft 365“ prisijungimą į „Flask Web Apps“.

Integruokite „Microsoft 365“ prisijungimą į „Flask Web Apps“.
Integruokite „Microsoft 365“ prisijungimą į „Flask Web Apps“.

„Microsoft 365“ autentifikavimo nustatymas

Kuriant žiniatinklio programas švietimo tikslais, integruojant institucinius išteklius, pvz., „Microsoft 365“ el. paštą, galima pagerinti vartotojo patirtį ir supaprastinti prisijungimo procesus. Ši integracija ypač naudinga, kai taikomosios programos turi atitikti universiteto IT politiką, o tai gali apriboti programų kūrimą naudojant universiteto kredencialus.

Pagal šį scenarijų naudoti asmeninę „Microsoft Azure“ paskyrą programai nustatyti yra praktiškas sprendimas. Tačiau gali kilti problemų, pvz., problemų dėl nuomininkų apribojimų bandant prisijungti universiteto el. paštu. Tam reikalinga strategija, skirta valdyti skirtingų nuomininkų vartotojų paskyras nepažeidžiant programos funkcionalumo ar saugumo.

komandą apibūdinimas
oauth.remote_app() Inicijuoja naują nuotolinės programos egzempliorių, skirtą OAuth; jis naudojamas bendrauti su OAuth teikėjais.
flask_oauthlib.client.OAuth „Flask“ plėtinys, skirtas integruoti „OAuth“ paslaugų teikėjus, kad būtų lengviau autentifikuoti naudojant „OAuth“ protokolus.
authorized_response() Flask-OAuthlib dalis, šis metodas nuskaito įgaliotą OAuth atsakymą iš atgalinio skambinimo funkcijos.
session['oauth_token'] Naudojamas „OAuth“ prieigos raktui saugoti sesijoje, kad būtų galima vėliau pasiekti, o tai labai svarbu tvarkyti vartotojo seansus ir autentifikavimo būseną.
microsoft.authorize() Metodas, nukreipiantis į OAuth teikėjo prieigos teisės URL, kur naudotojas gali įgalioti programą.
url_for() Pagalbinė funkcija „Flask“, kuri sugeneruoja nurodytos rodinio funkcijos galutinį tašką. Tai naudinga kuriant URL adresus peradresavimui.

Kolbos integravimo su Microsoft 365 autentifikavimu paaiškinimas

Frontend ir backend scenarijai kartu palengvina „Microsoft 365“ prisijungimo integravimą į „Flask“ žiniatinklio programą. Prieigoje paprastame HTML puslapyje pateikiamas mygtukas, kurį spustelėjus suaktyvinama JavaScript funkcija, nukreipianti vartotoją į užpakalinę sistemą autentifikuoti. Šis procesas prasideda nuo loginWithMicrosoft() funkcija, kuri pakeičia lango vietą į užpakalinį maršrutą, kurį tvarko „Flask“. Užpakalinis scenarijus naudoja Flask ir Flask-OAuthlib valdyti OAuth srautą naudojant „Microsoft“ tapatybės platformą.

Užpakalinėje dalyje, oauth.remote_app() komanda nustato ryšį su „Microsoft“ OAuth galutiniais taškais naudodama programos kredencialus. The microsoft.authorize() funkcija inicijuoja autentifikavimo procesą, nukreipdama vartotoją į Microsoft autorizacijos puslapį. Kai vartotojas prisijungia ir suteikia reikiamus leidimus, OAuth teikėjas siunčia juos atgal į programą naudodamas atgalinio skambinimo URL, nurodytą url_for('authorized'). The authorized_response() metodas apdoroja šį atgalinį skambutį, nuskaitydamas prieigos raktą, reikalingą autentifikavimui patvirtinti ir vartotojo seansui palaikyti.

Frontend Microsoft 365 autentifikavimo sąsaja

HTML ir JavaScript naudojami sąsajoje

<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 autentifikavimo srautas naudojant „Microsoft 365“.

Python ir Flask naudojami 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)

Išplėstinė „Microsoft 365“ autentifikavimo sąranka „Flask“.

Norint išspręsti „Microsoft 365“ prisijungimo integravimo problemą nenaudojant universiteto valdomo el. pašto, būtina suprasti kelių nuomininkų programų sąvoką „Azure“. Kelių nuomininkų programa leidžia vartotojams iš kelių Azure AD nuomininkų pasiekti programą, kuri idealiai tinka universiteto nustatymams, kur studentai gali turėti skirtingus domeno el. Norint atlikti šią sąranką, reikia sukonfigūruoti „Azure“ programą, kad ji priimtų prisijungimus iš bet kurio „Azure AD“ nuomotojo, o tai atliekama programos apraše nustatant „signInAudience“ į „AzureADMultipleOrgs“.

Šis konfigūracijos pakeitimas leidžia studentams naudoti savo universiteto el. pašto adresus, net jei programa iš pradžių buvo sukurta naudojant asmeninį el. Tai taip pat supaprastina valdymą, nes kūrėjui nereikia atskirai pridėti kiekvieno vartotojo prie nuomininko. Šis metodas išnaudoja Azure tapatybės valdymo paslaugų lankstumą, kad būtų užtikrintas platesnis pasiekiamumas ir sklandi integracija į švietimo programas.

Įprasti klausimai apie „Microsoft 365“ integravimą į „Flask Apps“.

  1. Kas yra „Azure AD“ kelių nuomininkų autentifikavimas?
  2. „Azure AD“ kelių nuomininkų autentifikavimas leidžia programoms aptarnauti vartotojus iš kelių „Azure AD“ nuomininkų, o ne tik to, kuriame programa buvo užregistruota.
  3. Kaip sukonfigūruoti „Flask“ programą, skirtą „Azure“ keliems nuomininkams?
  4. Turite modifikuoti programos registraciją „Azure“, kad priimtumėte prisijungimus iš bet kurio „Azure AD“ nuomotojo, apraše nustatydami „signInAudience“.
  5. Kokie yra naudojimo pranašumai oauth.remote_app() kolboje?
  6. Ši funkcija supaprastina prisijungimą prie „OAuth“ teikėjų valdant „OAuth“ srautą, įskaitant prieigos raktų gavimą ir saugojimą.
  7. Kodėl vartotojas gali gauti klaidos pranešimą, kad jo paskyros nuomininke nėra?
  8. Paprastai taip nutinka, jei programa nėra nustatyta kelių nuomininkų prieigai arba jei vartotojas nėra užregistruotas kaip išorinis nuomininko vartotojas.
  9. Kaip galiu tvarkyti klaidas autentifikavimo proceso metu „Flask“?
  10. Įdiekite klaidų tvarkymą authorized_response() funkcija sugauti ir reaguoti į klaidas, tokias kaip prieigos uždraudimas arba trūkstamų žetonų.

Paskutinės mintys apie „Microsoft 365“ autentifikavimo integravimą

Apibendrinant galima pasakyti, kad integruojant „Microsoft 365“ prisijungimą į „Flask“ programas nenaudojant universiteto el. pašto adreso, reikia nustatyti „Azure“ programą su asmeniniais kredencialais ir sukonfigūruoti ją kelių nuomininkų prieigai. Šis metodas ne tik apeina apribojimus, kuriuos universitetai gali taikyti oficialių el. laiškų naudojimui kuriant programas, bet ir supaprastina skirtingų nuomininkų prisijungimo procesą. Laikydamiesi geriausios „OAuth“ praktikos ir efektyviai tvarkydami galimas klaidas, kūrėjai gali užtikrinti sklandžią ir saugią naudotojo patirtį.