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

En este documento, se muestra cómo usar las políticas de contraseñas para mejorar las contraseñas mejora la seguridad de los usuarios nuevos y existentes.

Descripción general

Con las políticas de contraseñas, puedes mejorar la seguridad de la cuenta aplicando de manera forzosa las contraseñas los requisitos de complejidad. Las políticas de contraseñas admiten la siguiente contraseña requisitos:

  • 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 en los siguientes casos: configurados:

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

Antes de comenzar

Modos de aplicación

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

  • Requerir: Los intentos de acceso fallan hasta que el usuario actualice a una contraseña que cumpla con su política.
  • Notificación: Los usuarios pueden acceder con una contraseña que no cumpla con las políticas. Cualquiera se muestran los criterios que faltan para cumplir con la política. Criterios mostrados 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 pedirle que actualice su contraseña. En el siguiente ejemplo, se muestra una respuesta que contiene criterios para la contraseña:

    {
      "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 no habilitar el modo obligatorio, a menos que pretendes aplicar la política de contraseñas de inmediato. En su lugar, usa el modo de notificación, que permite que los usuarios accedan con sus contraseñas actuales y envía notificaciones que detallan los requisitos que le faltan a la contraseña.

Cuando habilites la aplicación forzosa, establece forceUpgradeOnSignin en true para habilitar la aplicación forzosa. en el 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:

  1. Si aún no lo hiciste, 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: La longitud mínima de la contraseña requerida
    • MAX_PASSWORD_LENGTH: La longitud máxima de la contraseña requerida
  3. 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

  1. 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',
      },
    })
    
  2. 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 que deseas inhabilitar. de contraseñas de Google.

Aplicación del lado del cliente

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