Cómo habilitar, inhabilitar y usar políticas de contraseñas
En este documento, se muestra cómo establecer políticas de contraseñas para mejorar la seguridad de las contraseñas de los 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:
- Se requiere un carácter en minúscula.
- Se requiere un carácter en mayúscula.
- Se requiere un carácter numérico.
- Se requiere un carácter que no sea alfanumérico.
- Longitud mínima de la contraseña (oscila entre 6 y 30 caracteres; el valor predeterminado es 6)
- Longitud máxima de la contraseña (longitud máxima de 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 en dos modos:
- Obligatorio: Los intentos de registro fallarán hasta que el usuario actualice su contraseña de acuerdo con tu política.
Notificación: Los usuarios pueden registrarse con una contraseña que no cumple con los requisitos. Se devuelven los criterios que faltan para satisfacer la política. Los criterios que se devuelven incluyen los siguientes:
MISSING_LOWERCASE_CHARACTERMISSING_UPPERCASE_CHARACTERMISSING_NUMERIC_CHARACTERMISSING_NON_ALPHANUMERIC_CHARACTERMINIMUM_PASSWORD_LENGTHMAXIMUM_PASSWORD_LENGTH
Puedes enviar esta información al usuario para informarle 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 cumpla con tu política. Si tienes usuarios activos, te recomendamos que no habilites la actualización forzosa en el acceso, a menos que pretendas aplicar de inmediato la política de contraseñas. 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 no cumple su contraseña.
Cuando habilites la aplicación forzosa, establece forceUpgradeOnSignin en true para habilitar la aplicación forzosa en el modo de requerimiento. Establécelo en false para habilitar la aplicación 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 del 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: Es la longitud mínima requerida de la contraseña.MAX_PASSWORD_LENGTH: Es la longitud máxima requerida de la contraseña.
Para aplicar una política de contraseñas a nivel del arrendatario, 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, }, }, })
Inhabilita la aplicación forzosa
Para inhabilitar la aplicación de la política de contraseñas a nivel del 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 del arrendatario, 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-IDpor el ID del arrendatario para el que deseas inhabilitar una política de contraseñas.
Aplicación del cumplimiento en el cliente
Las contraseñas se pueden validar según la política de contraseñas del proyecto o de un arrendatario en el 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.