Habilita, inhabilita y usa políticas de contraseñas

En este documento, se muestra cómo usar las políticas de contraseñas a 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 la cuenta si aplicas los requisitos de complejidad de las contraseñas. Las políticas de contraseñas admiten los siguientes requisitos para las contraseñas:

  • Se requiere un carácter en minúscula
  • Se requiere un carácter en mayúscula
  • Carácter numérico requerido
  • Se requieren caracteres no alfanuméricos
  • Longitud mínima de la contraseña (varía de 6 a 30 caracteres; el valor predeterminado es 6)
  • Longitud máxima de la contraseña (4,096 caracteres como máximo)

Los siguientes caracteres cumplen con el requisito de caracteres no alfanuméricos si se configuran:

^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `

Antes de comenzar

Modos de aplicación

Puedes habilitar la aplicación de la política de contraseñas de dos modos:

  • Requisito: los intentos de acceso fallan hasta que el usuario actualice una contraseña que cumpla con tu política.
  • Notificar: Los usuarios pueden acceder con una contraseña que no cumpla con los requisitos. Se muestran los criterios faltantes necesarios para satisfacer 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 tu política. Si tienes usuarios activos, te recomendamos que no habilites el modo de exigir a menos que intentes aplicar 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 sus contraseñas.

Cuando habilites la aplicación forzosa, configura forceUpgradeOnSignin como true para habilitar la aplicación forzosa en el modo obligatorio. Configúralo 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:

  1. Si aún no lo has hecho, configura el acceso con correo electrónico y contraseña.
  2. 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: Es la longitud mínima de contraseña requerida.
    • MAX_PASSWORD_LENGTH: Es la longitud máxima que se requiere de la contraseña.
  3. Para aplicar una política de contraseñas a nivel del usuario, ejecuta lo siguiente:

    import { getAuth } from 'firebase-admin/auth';
    
    // Update project config with password policy config
    getAuth().tenantConfigManager().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

  1. Para inhabilitar la aplicación 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',
      },
    })
    
  2. Para inhabilitar la aplicación de la política de contraseñas a nivel del usuario, ejecuta el siguiente comando:

    import { getAuth } from 'firebase-admin/auth';
    
    // Update tenant config with password policy config
    getAuth().tenantConfigManager().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 forzosa por parte del cliente

Las contraseñas se pueden validar con la política de contraseñas del proyecto o del usuario 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.