Configurar reclamos personalizados para los usuarios

En este documento se explica cómo configurar reclamaciones personalizadas en los usuarios con Identity Platform. Las reclamaciones personalizadas se insertan en los tokens de usuario durante la autenticación. Tu app puede usar estas reclamaciones para manejar situaciones complejas de autorización, como restringir el acceso de un usuario a un recurso según su función.

Antes de comenzar

Usa reclamaciones personalizadas

Para conservar la seguridad, configura las reclamaciones personalizadas con el SDK de Admin en tu servidor. En el siguiente ejemplo, se muestra la manera de usar reclamaciones personalizadas con Node.js; La referencia del SDK de Admin incluye ejemplos para otros lenguajes.

  1. Configura la reclamación personalizada que deseas usar. En el siguiente ejemplo, se establece una reclamación personalizada en el usuario para describir que es un administrador:

    // Set admin privilege on the user corresponding to uid.
    admin.auth().setCustomUserClaims(uid, {admin: true}).then(() => {
      // The new custom claims will propagate to the user's ID token the
      // next time a new one is issued.
    });
    
  2. Valida la reclamación personalizada la próxima vez que se envíe a tu servidor:

    // Verify the ID token first.
    admin.auth().verifyIdToken(idToken).then((claims) => {
      if (claims.admin === true) {
        // Allow access to requested admin resource.
      }
    });
    
  3. Para determinar qué reclamaciones personalizadas están presentes para un usuario, haz lo siguiente:

    // Lookup the user associated with the specified uid.
    admin.auth().getUser(uid).then((userRecord) => {
      // The claims can be accessed on the user record.
      console.log(userRecord.customClaims.admin);
    });
    

Las reclamaciones personalizadas son muy potentes, pero debes tener en cuenta lo siguiente:

  • El tamaño de los reclamos personalizados no puede ser superior a 1,000 bytes. Si intentas pasar reclamaciones de más de 1,000 bytes, se producirá un error.
  • Las reclamaciones personalizadas se insertan en el JWT de usuario cuando se emite el token. Las reclamaciones nuevas no están disponibles hasta que se actualice el token. Puedes actualizar un token de forma silenciosa si llamas a user.getIdToken(true).
  • Para mantener la continuidad y la seguridad, solo establece reclamaciones personalizadas en un entorno de servidor seguro.

¿Qué sigue?