Habilita, inhabilita y usa políticas de contraseñas
En este documento, se muestra cómo usar políticas de contraseñas con el fin de mejorar la seguridad de las contraseñas para usuarios nuevos y existentes.
Descripción general
Con las políticas de contraseñas, puedes mejorar la seguridad de las cuentas aplicando requisitos de complejidad para las contraseñas. Las políticas de contraseñas admiten los siguientes requisitos de contraseña:
- Se requiere un carácter en minúscula
- Carácter en mayúscula obligatorio
- Carácter numérico requerido
- Se requiere un carácter que no sea alfanumérico
- Longitud mínima de la contraseña (varía de 6 a 30 caracteres; el valor predeterminado es de 6)
- Longitud máxima de la contraseña (4,096 caracteres)
Los siguientes caracteres cumplen con el requisito de caracteres no alfanuméricos si se configuran:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `
Antes de comenzar
- Instala el SDK de Admin.
Modos de aplicación
Puedes habilitar la aplicación forzosa de la política de contraseñas de dos modos:
- Requisito: Los intentos de acceso fallan hasta que el usuario actualiza a una contraseña que cumple con tu política.
Notificación: Los usuarios pueden acceder con una contraseña que no cumpla con las políticas. Se muestran los criterios faltantes necesarios para cumplir con la política. Entre los criterios que se muestran, se incluyen los siguientes:
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 pedirle que actualice su contraseña. En el siguiente ejemplo, se muestra una respuesta que contiene criterios de contraseña faltantes:
{ "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 usuarios nuevos deben elegir una contraseña que satisfaga su política. Si tienes usuarios activos, te recomendamos que no habilites el modo de solicitud, a menos que intentes aplicar de manera forzosa la política de contraseñas de inmediato. En su lugar, usa el modo de notificación, que permite a los usuarios acceder con sus contraseñas actuales y envía notificaciones que detallan los requisitos que carecen de su contraseña.
Cuando habilites la aplicación forzosa, configura forceUpgradeOnSignin
como true
para habilitar la aplicación en modo de solicitud. Configúralo en false
para habilitar la aplicación forzosa en el modo de notificación.
Habilita la aplicación forzosa
Para aplicar una política de contraseñas, haz lo siguiente:
- Si aún no lo hiciste, configura el acceso con correo electrónico y contraseña.
Para aplicar una política de contraseñas a nivel de proyecto, ejecuta el siguiente comando:
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, }, }, })
Reemplaza lo siguiente:
MIN_PASSWORD_LENGTH
: La longitud mínima de la contraseña requeridaMAX_PASSWORD_LENGTH
: La longitud máxima de la contraseña requerida
Para aplicar una política de contraseñas a nivel de usuario, ejecuta el siguiente comando:
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 forzosa
Para inhabilitar la aplicación forzosa de la política de contraseñas a nivel de proyecto, ejecuta el siguiente comando:
import { getAuth } from 'firebase-admin/auth'; // Update project config with password policy config getAuth().projectConfigManager().updateProjectConfig({ passwordPolicyConfig: { enforcementState: 'OFF', }, })
Para inhabilitar la aplicación de la política de contraseñas a nivel de usuario, ejecuta el siguiente comando:
import { getAuth } from 'firebase-admin/auth'; // Update tenant config with password policy config getAuth().tenantManager().updateTenant(TENANT-ID, { passwordPolicyConfig: { enforcementState: 'OFF', }, })
Reemplaza
TENANT-ID
por el ID de usuario para el que deseas inhabilitar una política de contraseñas.
Aplicación del lado del cliente
Las contraseñas se pueden validar según la política de contraseñas del proyecto o un usuario del lado del cliente antes del envío.
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.