Habilitación de las opciones de autenticación en una aplicación web de Python mediante Azure AD B2C
En este artículo se describe cómo habilitar, personalizar y mejorar la experiencia de autenticación de Azure Active Directory B2C (Azure AD B2C) para una aplicación web de Python.
Antes de empezar, es importante que se familiarice con cómo configurar la autenticación en una aplicación web de Python de ejemplo mediante Azure AD B2C.
Uso de un dominio personalizado
Mediante el uso de un dominio personalizado, puede personalizar completamente la dirección URL de autenticación. Desde el punto de vista del usuario, este permanece en el dominio durante el proceso de autenticación, en lugar de que se le redirija al nombre de dominio b2clogin.com de Azure AD B2C.
También puede reemplazar el nombre del inquilino de B2C (contoso.onmicrosoft.com) en la dirección URL de la solicitud de autenticación por el GUID del identificador de inquilino para quitar todas las referencias a "b2c" en la dirección URL. Por ejemplo, puede cambiar https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/
por https://account.contosobank.co.uk/<tenant ID GUID>/
.
Para usar un dominio personalizado y el id. de inquilino en la URL de autenticación:
- Siga las instrucciones de Habilitación de dominios personalizados.
- En el archivo app_config.py, actualice el miembro de clase
authority_template
con el dominio personalizado.
En el siguiente código de Python se muestra la configuración de la aplicación antes del cambio:
authority_template = "https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{user_flow}"
En el siguiente código de Python se muestra la configuración de la aplicación después del cambio:
authority_template = "https://custom.domain.com/00000000-0000-0000-0000-000000000000/{user_flow}"
Rellenar previamente el nombre de inicio de sesión
Durante el recorrido de inicio de sesión de un usuario, la aplicación podría tener como destino un usuario específico. Cuando una aplicación se dirige a un usuario, puede especificar, en la solicitud de autorización, el parámetro de consulta login_hint
con el nombre de inicio de sesión de usuario. Azure AD B2C rellena automáticamente el nombre de inicio de sesión y solo es necesario que el usuario proporcione la contraseña.
Para rellenar previamente el nombre de inicio de sesión, haga lo siguiente:
- Si usa una directiva personalizada, agregue la notificación de entrada necesaria como se describe en Configuración del inicio de sesión directo.
- Busque el método
initiate_auth_code_flow
y, después, agregue el parámetrologin_hint
con el nombre de dominio del proveedor de identidades (por ejemplo, facebook.com).
def _build_auth_code_flow(authority=None, scopes=None):
return _build_msal_app(authority=authority).initiate_auth_code_flow(
scopes or [],
redirect_uri=url_for("authorized", _external=True),
login_hint="bob@contoso.com")
Preseleccione un proveedor de identidad
Si se ha configurado el recorrido de inicio de sesión para que la aplicación incluya cuentas de redes sociales como Facebook, LinkedIn o Google, puede especificar el parámetro domain_hint
. Este parámetro de consulta proporciona una sugerencia a Azure AD B2C acerca del proveedor de identidades sociales que debe usarse para iniciar sesión. Por ejemplo, si la aplicación especifica domain_hint=facebook.com
, el flujo de inicio de sesión va directamente a la página de inicio de sesión de Facebook.
Para redirigir a los usuarios a un proveedor de identidades externo, haga lo siguiente:
Compruebe el nombre de dominio del proveedor de identidades externo. Para más información, consulte Redirección del inicio de sesión a un proveedor social.
Busque el método
initiate_auth_code_flow
y, después, agregue el parámetrodomain_hint
con la sugerencia de inicio de sesión.def _build_auth_code_flow(authority=None, scopes=None): return _build_msal_app(authority=authority).initiate_auth_code_flow( scopes or [], redirect_uri=url_for("authorized", _external=True), domain_hint="facebook.com")
Pasos siguientes
- Para obtener más información, vea Opciones de configuración de MSAL para Python.