$lang['tuto'] = "tutorials"; ?>$lang['tuto'] = "tutorials"; ?> Integreu l'inici de sessió de Microsoft 365 a les

Integreu l'inici de sessió de Microsoft 365 a les aplicacions web de Flask

Integreu l'inici de sessió de Microsoft 365 a les aplicacions web de Flask
Integreu l'inici de sessió de Microsoft 365 a les aplicacions web de Flask

Configuració de l'autenticació de Microsoft 365

Quan es desenvolupen aplicacions web amb finalitats educatives, la integració de recursos institucionals com el correu electrònic de Microsoft 365 pot millorar l'experiència de l'usuari i agilitzar els processos d'inici de sessió. Aquesta integració és especialment útil quan les aplicacions s'han d'alinear amb les polítiques de TI de la universitat, cosa que podria restringir la creació d'aplicacions amb credencials universitàries.

En aquest escenari, utilitzar un compte personal de Microsoft Azure per configurar l'aplicació és una solució pràctica. Tanmateix, poden sorgir reptes, com ara problemes amb les restriccions dels inquilins quan intenteu iniciar sessió amb un correu electrònic de la universitat. Això requereix una estratègia per gestionar els comptes d'usuari entre diferents inquilins sense comprometre la funcionalitat o la seguretat de l'aplicació.

Comandament Descripció
oauth.remote_app() Inicialitza una nova instància d'aplicació remota per a OAuth; s'utilitza per gestionar la comunicació amb els proveïdors d'OAuth.
flask_oauthlib.client.OAuth Una extensió de Flask per integrar proveïdors de serveis OAuth, facilitant l'autenticació mitjançant protocols OAuth.
authorized_response() Part de Flask-OAuthlib, aquest mètode recupera la resposta OAuth autoritzada de la funció de devolució de trucada.
session['oauth_token'] S'utilitza per emmagatzemar el testimoni OAuth a la sessió per a un accés posterior, fonamental per gestionar les sessions d'usuari i l'estat d'autenticació.
microsoft.authorize() Un mètode que redirigeix ​​a l'URL d'autorització del proveïdor d'OAuth on l'usuari pot autoritzar l'aplicació.
url_for() Una funció auxiliar a Flask que genera un punt final per a una funció de vista determinada. És útil per generar URL per a redireccions.

Explicació de la integració de Flask amb l'autenticació de Microsoft 365

Els scripts d'interfície i backend junts faciliten la integració de l'inici de sessió de Microsoft 365 en una aplicació web de Flask. A la interfície, una pàgina HTML senzilla presenta un botó que, quan es fa clic, activa una funció JavaScript per redirigir l'usuari al backend per a l'autenticació. Aquest procés comença amb el loginWithMicrosoft() funció, que altera la ubicació de la finestra a la ruta de fons gestionada per Flask. L'script de fons utilitza Flask i Flask-OAuthlib per gestionar el flux OAuth amb la plataforma d'identitat de Microsoft.

Al backend, el oauth.remote_app() L'ordre configura una connexió amb els punts finals OAuth de Microsoft mitjançant les credencials de l'aplicació. El microsoft.authorize() La funció inicia el procés d'autenticació redirigint l'usuari a la pàgina d'autorització de Microsoft. Després que l'usuari iniciï sessió i atorgui els permisos necessaris, el proveïdor d'OAuth els torna a enviar a l'aplicació mitjançant l'URL de retorn de trucada especificat a url_for('authorized'). El authorized_response() El mètode processa aquesta devolució de trucada, recuperant el testimoni d'accés necessari per confirmar l'autenticació i mantenir la sessió de l'usuari.

Interfície d'autenticació de Microsoft 365 frontend

HTML i JavaScript utilitzats per a la interfície

<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>

Flux d'autenticació de backend amb Microsoft 365

Python i Flask utilitzats per al 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)

Configuració avançada per a l'autenticació de Microsoft 365 a Flask

Per abordar el problema d'integrar l'inici de sessió de Microsoft 365 sense utilitzar un correu electrònic gestionat per la universitat, és essencial entendre el concepte d'aplicacions multi-inquilí a Azure. Una aplicació per a diversos inquilins permet als usuaris de diversos inquilins d'Azure AD accedir a l'aplicació, la qual cosa és ideal per a la configuració universitària on els estudiants poden tenir correus electrònics de domini diferents. Aquesta configuració requereix configurar l'aplicació Azure per acceptar inicis de sessió des de qualsevol inquilí d'Azure AD, cosa que es fa configurant el "signInAudience" al manifest de l'aplicació a "AzureADMultipleOrgs".

Aquest canvi de configuració permet als estudiants utilitzar els seus correus electrònics universitaris, encara que l'aplicació es va crear inicialment amb un correu electrònic personal. També simplifica la gestió, ja que el desenvolupador no necessita afegir cada usuari individualment a l'arrendatari. Aquest enfocament aprofita la flexibilitat dels serveis de gestió d'identitats d'Azure per garantir una accessibilitat més àmplia i una integració perfecta a les aplicacions educatives.

Preguntes habituals sobre la integració de Microsoft 365 a les aplicacions de Flask

  1. Què és l'autenticació multi-inquilí d'Azure AD?
  2. L'autenticació multi-inquilí d'Azure AD permet a les aplicacions servir usuaris de diversos inquilins d'Azure AD, no només a aquell on es va registrar l'aplicació.
  3. Com puc configurar la meva aplicació Flask per a Azure multi-inquilí?
  4. Heu de modificar el registre de l'aplicació a l'Azure per acceptar els inicis de sessió de qualsevol inquilí d'Azure AD configurant el "signInAudience" al manifest.
  5. Quins són els beneficis d'utilitzar oauth.remote_app() en Flask?
  6. Aquesta funció simplifica la connexió amb els proveïdors d'OAuth gestionant el flux d'OAuth, inclosa la recuperació i l'emmagatzematge de testimonis.
  7. Per què un usuari pot rebre un error que indica que el seu compte no existeix a l'arrendatari?
  8. Això sol passar si l'aplicació no està configurada per a l'accés multi-inquilí o si l'usuari no està registrat com a usuari extern a l'arrendatari.
  9. Com puc gestionar els errors durant el procés d'autenticació a Flask?
  10. Implementar la gestió d'errors al authorized_response() funció per detectar i respondre a errors com ara denegacions d'accés o fitxes que falten.

Consideracions finals sobre la integració de l'autenticació de Microsoft 365

En conclusió, integrar l'inici de sessió de Microsoft 365 a les aplicacions de Flask sense utilitzar un correu electrònic universitari implica configurar una aplicació Azure amb credencials personals i configurar-la per a l'accés multi-inquilí. Aquest enfocament no només evita les restriccions que les universitats podrien imposar a l'ús de correus electrònics oficials per a la creació d'aplicacions, sinó que també simplifica el procés d'inici de sessió per als usuaris de diferents inquilins. Seguint les pràctiques recomanades per a OAuth i gestionant els possibles errors de manera eficaç, els desenvolupadors poden oferir una experiència d'usuari perfecta i segura.