Habilitar, inhabilitar y usar políticas de contraseñas
En este documento se explica cómo usar las políticas de contraseñas para mejorar la seguridad de las contraseñas de los usuarios nuevos y actuales.
Información general
Las políticas de contraseñas te permiten aumentar la protección de la cuenta implementando requisitos de seguridad que deben cumplir las contraseñas. Las políticas de contraseñas admiten los siguientes requisitos:
- Se requiere una letra minúscula
- Se requiere un carácter en mayúsculas
- Se requiere un carácter numérico
- Se requiere un carácter no alfanumérico
- Longitud mínima de la contraseña (entre 6 y 30 caracteres; el valor predeterminado es 6)
- Longitud máxima de la contraseña (4096 caracteres)
Los siguientes caracteres cumplen el requisito de caracteres no alfanuméricos si se configuran:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `
Antes de empezar
- Instala el SDK de administrador.
Modos de cumplimiento
Puedes habilitar la aplicación de la política de contraseñas de dos formas:
- Requerir: el usuario no podrá registrarse correctamente hasta que su contraseña no cumpla los requisitos de tu política.
Notificar: los usuarios pueden registrarse con una contraseña que no cumpla los requisitos. Se mostrarán los criterios que falten para cumplir la política. Los criterios devueltos incluyen:
MISSING_LOWERCASE_CHARACTER
MISSING_UPPERCASE_CHARACTER
MISSING_NUMERIC_CHARACTER
MISSING_NON_ALPHANUMERIC_CHARACTER
MINIMUM_PASSWORD_LENGTH
MAXIMUM_PASSWORD_LENGTH
Puedes enviar esta información al usuario para informarle de que debe actualizar su contraseña. En el siguiente ejemplo se muestra una respuesta que contiene criterios de contraseña que faltan:
{ "kind": "identitytoolkit#VerifyPasswordResponse", "localId": "CJL1i2", "email": "cloudysanfrancisco@gmail.com", "displayName": "", "idToken": "ID_TOKEN", "registered": true, "userNotifications": [ { "notificationCode": "MISSING_NUMERIC_CHARACTER", "notificationMessage": "Password must contain a numeric character" }, { "notificationCode": "MISSING_NON_ALPHANUMERIC_CHARACTER", "notificationMessage": "Password must contain a non-alphanumeric character" } ] }
Los nuevos usuarios deben elegir una contraseña que cumpla tu política. Si tienes usuarios activos, te recomendamos que no habilites la actualización obligatoria al iniciar sesión, a menos que tengas la intención de aplicar la política de contraseñas inmediatamente. En su lugar, usa el modo de notificación, que permite a los usuarios iniciar sesión con sus contraseñas actuales y envía notificaciones que detallan los requisitos que no cumplen sus contraseñas.
Cuando habilites la implementación obligatoria, define forceUpgradeOnSignin
como true
para habilitarla en el modo obligatorio. Defínelo como false
para habilitar la aplicación en el modo de notificación.
Habilitar la aplicación obligatoria
Para aplicar una política de contraseñas, sigue estos pasos:
- Si aún no lo has hecho, configura el inicio de sesión con correo y contraseña.
Para aplicar una política de contraseñas a nivel de proyecto, ejecuta lo siguiente:
import { getAuth } from 'firebase-admin/auth'; // Update project config with password policy config getAuth().projectConfigManager().updateProjectConfig({ passwordPolicyConfig: { enforcementState: 'ENFORCE', forceUpgradeOnSignin: true, constraints: { requireUppercase: true, requireLowercase: true, requireNonAlphanumeric: true, requireNumeric: true, minLength: MIN_PASSWORD_LENGTH, maxLength: MAX_PASSWORD_LENGTH, }, }, })
Haz los cambios siguientes:
MIN_PASSWORD_LENGTH
: la longitud mínima requerida de la contraseñaMAX_PASSWORD_LENGTH
: longitud máxima de la contraseña
Para aplicar una política de contraseñas a nivel de inquilino, ejecuta lo siguiente:
import { getAuth } from 'firebase-admin/auth'; // Update project config with password policy config getAuth().tenantManager().createTenant({ displayName: "admin-tenant", passwordPolicyConfig: { enforcementState: 'ENFORCE', forceUpgradeOnSignin: true, constraints: { requireUppercase: true, requireLowercase: true, requireNonAlphanumeric: true, requireNumeric: true, minLength: MIN_PASSWORD_LENGTH, maxLength: MAX_PASSWORD_LENGTH, }, }, })
Inhabilitar la aplicación obligatoria
Para inhabilitar la aplicación de la política de contraseñas a nivel de proyecto, ejecuta lo siguiente:
import { getAuth } from 'firebase-admin/auth'; // Update project config with password policy config getAuth().projectConfigManager().updateProjectConfig({ passwordPolicyConfig: { enforcementState: 'OFF', }, })
Para inhabilitar la aplicación obligatoria de la política sobre contraseñas a nivel de inquilino, ejecuta lo siguiente:
import { getAuth } from 'firebase-admin/auth'; // Update tenant config with password policy config getAuth().tenantManager().updateTenant(TENANT-ID, { passwordPolicyConfig: { enforcementState: 'OFF', }, })
Sustituye
TENANT-ID
por el ID del arrendatario para el que quieras inhabilitar una política de contraseñas.
Aplicación del lado del cliente
Las contraseñas se pueden validar en el lado del cliente con respecto a la política de contraseñas del proyecto o de un arrendatario antes de enviarlas.
import { getAuth, validatePassword } from 'firebase/auth';
const auth = getAuth();
auth.tenantId = TENANT-ID;
const status = await validatePassword(auth, 'password').catch((error) => {
// Password could not be validated.
});
const policy = status.passwordPolicy;
// Use the status and policy to show what requirements are met and which are missing.