Integre el inicio de sesión de Microsoft 365 en Flask Web Apps

Temp mail SuperHeros
Integre el inicio de sesión de Microsoft 365 en Flask Web Apps
Integre el inicio de sesión de Microsoft 365 en Flask Web Apps

Configurar la autenticación de Microsoft 365

Al desarrollar aplicaciones web con fines educativos, la integración de recursos institucionales como el correo electrónico de Microsoft 365 puede mejorar la experiencia del usuario y agilizar los procesos de inicio de sesión. Esta integración es particularmente útil cuando las aplicaciones necesitan alinearse con las políticas de TI de la universidad, lo que podría restringir la creación de aplicaciones con credenciales universitarias.

En este escenario, utilizar una cuenta personal de Microsoft Azure para configurar la aplicación es una solución práctica. Sin embargo, pueden surgir desafíos, como problemas con las restricciones de los inquilinos al intentar iniciar sesión con un correo electrónico de la universidad. Esto requiere una estrategia para administrar cuentas de usuario en diferentes inquilinos sin comprometer la funcionalidad o seguridad de la aplicación.

Dominio Descripción
oauth.remote_app() Inicializa una nueva instancia de aplicación remota para OAuth; se utiliza para manejar la comunicación con proveedores de OAuth.
flask_oauthlib.client.OAuth Una extensión de Flask para integrar proveedores de servicios OAuth, lo que facilita la autenticación a través de protocolos OAuth.
authorized_response() Como parte de Flask-OAuthlib, este método recupera la respuesta OAuth autorizada de la función de devolución de llamada.
session['oauth_token'] Se utiliza para almacenar el token de OAuth en la sesión para un acceso posterior, fundamental para administrar las sesiones de usuario y el estado de autenticación.
microsoft.authorize() Un método que redirige a la URL de autorización del proveedor de OAuth donde el usuario puede autorizar la aplicación.
url_for() Una función auxiliar en Flask que genera un punto final para una función de vista determinada. Es útil para generar URL para redireccionamientos.

Explicación de la integración de Flask con la autenticación de Microsoft 365

Los scripts de frontend y backend juntos facilitan la integración del inicio de sesión de Microsoft 365 en una aplicación web Flask. En el frontend, una página HTML simple presenta un botón que, cuando se hace clic, activa una función de JavaScript para redirigir al usuario al backend para su autenticación. Este proceso comienza con la loginWithMicrosoft() función, que altera la ubicación de la ventana a la ruta de backend manejada por Flask. El script de backend utiliza Flask y Flask-OAuthlib para gestionar el flujo de OAuth con la plataforma de identidad de Microsoft.

En la parte trasera, el oauth.remote_app() El comando configura una conexión con los puntos finales OAuth de Microsoft utilizando las credenciales de la aplicación. El microsoft.authorize() La función inicia el proceso de autenticación redirigiendo al usuario a la página de autorización de Microsoft. Después de que el usuario inicia sesión y otorga los permisos necesarios, el proveedor de OAuth los envía de regreso a la aplicación utilizando la URL de devolución de llamada especificada en url_for('authorized'). El authorized_response() El método procesa esta devolución de llamada y recupera el token de acceso necesario para confirmar la autenticación y mantener la sesión del usuario.

Interfaz de autenticación de Microsoft 365 frontal

HTML y JavaScript utilizados para la interfaz

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

Flujo de autenticación de backend con Microsoft 365

Python y Flask utilizados para 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ón avanzada para la autenticación de Microsoft 365 en Flask

Para abordar el problema de integrar el inicio de sesión de Microsoft 365 sin utilizar un correo electrónico administrado por la universidad, es esencial comprender el concepto de aplicaciones multiinquilino en Azure. Una aplicación multiinquilino permite a los usuarios de varios inquilinos de Azure AD acceder a la aplicación, lo cual es ideal para entornos universitarios donde los estudiantes pueden tener diferentes dominios de correo electrónico. Esta configuración requiere configurar la aplicación de Azure para aceptar inicios de sesión de cualquier inquilino de Azure AD, lo que se realiza estableciendo "signInAudience" en el manifiesto de la aplicación en "AzureADMultipleOrgs".

Este cambio de configuración permite a los estudiantes utilizar sus correos electrónicos universitarios, incluso si la aplicación se creó inicialmente con un correo electrónico personal. También simplifica la gestión ya que el desarrollador no necesita agregar individualmente cada usuario al inquilino. Este enfoque aprovecha la flexibilidad de los servicios de administración de identidades de Azure para garantizar una accesibilidad más amplia y una integración perfecta en aplicaciones educativas.

Preguntas comunes sobre la integración de Microsoft 365 en aplicaciones Flask

  1. ¿Qué es la autenticación multiinquilino de Azure AD?
  2. La autenticación multiinquilino de Azure AD permite que las aplicaciones presten servicios a usuarios de varios inquilinos de Azure AD, no solo de aquel en el que se registró la aplicación.
  3. ¿Cómo configuro mi aplicación Flask para multiinquilino de Azure?
  4. Debe modificar el registro de la aplicación en Azure para aceptar inicios de sesión de cualquier inquilino de Azure AD configurando 'signInAudience' en el manifiesto.
  5. ¿Cuáles son los beneficios de usar? oauth.remote_app() en matraz?
  6. Esta función simplifica la conexión a proveedores de OAuth mediante la gestión del flujo de OAuth, incluida la recuperación y el almacenamiento de tokens.
  7. ¿Por qué un usuario podría recibir un error que indique que su cuenta no existe en el inquilino?
  8. Esto suele ocurrir si la aplicación no está configurada para acceso multiinquilino o si el usuario no está registrado como usuario externo en el inquilino.
  9. ¿Cómo puedo manejar los errores durante el proceso de autenticación en Flask?
  10. Implementar el manejo de errores en el authorized_response() función para detectar y responder a errores como denegaciones de acceso o tokens faltantes.

Reflexiones finales sobre la integración de autenticación de Microsoft 365

En conclusión, integrar el inicio de sesión de Microsoft 365 en las aplicaciones Flask sin utilizar un correo electrónico de la universidad implica configurar una aplicación de Azure con credenciales personales y configurarla para acceso multiinquilino. Este enfoque no sólo evita las restricciones que las universidades podrían imponer sobre el uso de correos electrónicos oficiales para la creación de aplicaciones, sino que también simplifica el proceso de inicio de sesión para los usuarios de diferentes inquilinos. Si siguen las mejores prácticas para OAuth y manejan los errores potenciales de manera efectiva, los desarrolladores pueden brindar una experiencia de usuario segura y fluida.