Saltar al contenido principal
De acuerdo con el artículo 7 del RGPD, debe solicitar a los usuarios su consentimiento para el tratamiento de sus datos personales de forma clara y fácilmente accesible. También debe demostrar que el usuario ha dado su consentimiento y proporcionar un medio sencillo para retirarlo en cualquier momento. En este artículo se explica cómo puede usar las funcionalidades de Auth0 para implementar estos requisitos.
El contenido de estos documentos no constituye asesoramiento jurídico ni debe considerarse un sustituto de la asistencia legal. La responsabilidad final de comprender y cumplir con el RGPD recae en usted, aunque Auth0 le ayudará a cumplir los requisitos del RGPD siempre que sea posible.
Al registrarse, debe pedir el consentimiento de sus usuarios. Con Auth0, puede guardar esta información en los metadatos del usuario. Hay varias opciones disponibles según cómo utilice Auth0 para autenticar a sus usuarios. Antes de diseñar su solución con metadatos, asegúrese de conocer las restricciones. Auth0 limita el tamaño total de user_metadata a 16 MB. Para obtener más información, consulte Nombres de campos y tipos de datos de los metadatos.
Los metadatos de Auth0 no son un almacén de datos seguro y no deben utilizarse para almacenar información confidencial, como secretos de alto riesgo e información de identificación personal (PII), por ejemplo, números de la seguridad social o de tarjetas de crédito. Se recomienda encarecidamente a los clientes de Auth0 que evalúen los datos almacenados en los metadatos y que solo almacenen los que sean necesarios para fines de gestión de identidades y accesos.

Usar Lock

Puede personalizar la interfaz de Lock para mostrar enlaces a sus páginas de términos y condiciones y/o política de privacidad, así como una casilla de consentimiento que el usuario debe marcar para poder registrarse. Esto se puede hacer con la opción de Lock mustAcceptTerms. Esta propiedad, cuando se establece en true, muestra una casilla junto a los términos y condiciones que debe marcarse antes de completar el registro. Los términos y condiciones se pueden especificar mediante la opción languageDictionary. Para obtener más información, lea Opciones de configuración de Lock. Una vez que el usuario acepte y se registre, guarde la información de consentimiento en user_metadata mediante una regla que se ejecute en el primer inicio de sesión. Para obtener más información sobre Rules, lea Auth0 Rules. Si desea obtener más información de los usuarios durante el registro, y autentica a los usuarios con una conexión de base de datos, puede agregar campos personalizados a la interfaz de Lock. Esto se puede hacer con la opción de Lock additionalSignUpFields. Todos los campos personalizados se agregan automáticamente a user_metadata. Si usa inicios de sesión con redes sociales, agregar campos personalizados no es una opción, pero puede redirigir al usuario a otra página donde solicite el consentimiento y cualquier información adicional, y luego redirigirlo de nuevo para finalizar la transacción de autenticación. Esto se puede hacer con reglas de redirección. Para obtener más información, lea Redirigir usuarios desde Rules. Una vez que se complete el proceso de registro, guarde la información de consentimiento en user_metadata llamando al endpoint Update User de . Para aprender a implementar cualquiera de estos escenarios, lea GDPR: Registrar el consentimiento con Lock.

Usar una interfaz de usuario personalizada

Si usa un formulario de registro personalizado con una conexión de base de datos, debe agregar un campo adicional a la pantalla de registro para recopilar el consentimiento del usuario. Después, llame al endpoint Signup de Authentication API para crear al usuario en Auth0. En este punto, puede establecer la información de consentimiento como parte de user_metadata. Como alternativa, si usa Auth0.js desde una SPA, puede usar el método signup para crear al usuario en Auth0 y establecer la información de consentimiento como parte de user_metadata. Si usa un formulario de registro personalizado con proveedores sociales, no puede establecer la información de consentimiento del usuario durante el registro, pero puede actualizarla en cuanto se cree el usuario. Guarde la información de consentimiento en user_metadata llamando al endpoint Update User de Management API. Para obtener más información sobre cómo implementar cualquiera de estos escenarios, consulte GDPR: Track Consent with Custom UI. Si necesita solicitar el consentimiento de usuarios existentes y decide migrarlos desde una base de datos existente a Auth0, puede usar nuestra función de migración automática de usuarios. Al activarla, cada vez que un usuario inicie sesión por primera vez (desde su activación), se creará en Auth0 sin necesidad de restablecer su contraseña. Para ello, debe:
  • Redactar la notificación que verán los usuarios sobre cómo se usan sus datos, durante cuánto tiempo se usarán, cuáles son sus derechos, etc., así como personalizar el cuadro de registro de la interfaz de usuario.
  • Determinar si es necesario volver a solicitar el consentimiento a sus usuarios, en función de sus términos y condiciones anteriores y de las certificaciones de privacidad previas.
Tenga en cuenta que, cada vez que cambien sus Términos y Condiciones, debe volver a solicitar el consentimiento de los usuarios. De acuerdo con el RGPD, debe poder demostrar que el usuario ha dado su consentimiento para el tratamiento de sus datos personales. Con Auth0, puede guardar la información de consentimiento del usuario como parte de user_metadata. Puede guardar solo una marca que indique si el usuario ha dado su consentimiento o no, o bien un conjunto de datos y preferencias de consentimiento (incluidos, por ejemplo, la fecha en que el usuario dio su consentimiento, los términos que aceptó, etc.). Después, puede acceder a esta información y gestionarla mediante la Management API. La Management API también ofrece varias opciones para buscar usuarios y endpoints para actualizar los metadatos del usuario o exportar usuarios por lotes. Para acceder a la Management API, necesitará un . Para saber cómo obtener un token de acceso para la Management API, consulte Management API Access Tokens.

Buscar usuarios por dirección de correo electrónico

Para buscar un usuario por su dirección de correo electrónico, use el endpoint Buscar usuario por correo electrónico. Configure el parámetro de solicitud fields como user_metadata para limitar los campos que se devuelven. De este modo, solo se devolverá user_metadata en lugar del perfil completo del usuario. Solicitud de ejemplo: Respuesta de ejemplo:
[
  {},
  {
    "user_metadata": {
      "consent": {
	    "given": true,
	    "date": "01/23/2018",
	    "text_details": "some-url"
	  }
    }
  }
]

Buscar usuarios por ID

Para buscar un usuario por su ID, use el endpoint Get a User. Establezca el parámetro de solicitud fields en user_metadata para limitar los campos que se devuelven. De este modo, solo se devolverá user_metadata en lugar del perfil completo del usuario. Solicitud de ejemplo: Respuesta de ejemplo:
{
  "user_metadata": {
    "consent": {
	    "given": true,
	    "date": "01/23/2018",
	    "text_details": "some-url"
  	}
  }
}
Para actualizar el user_metadata de un usuario, use el endpoint Actualizar un usuario. La estructura de la solicitud depende de cómo haya organizado sus metadatos: como propiedades raíz o como propiedades internas. Si sus metadatos se almacenan como propiedades raíz:
{
  "consentGiven": true,
  "consentDetails": "some-url"
}
Si los metadatos se almacenan como propiedades internas:
{
  "consent": {
    "given": true,
    "text_details": "some-url"
  }
}

Actualizar propiedad de nivel raíz

Las actualizaciones de las propiedades de nivel raíz se fusionan, por lo que solo debe enviar el valor del campo que desea actualizar. Por ejemplo, supongamos que queremos agregar una fecha de consentimiento y establecerla en 01/23/2018. Esto añadirá una nueva propiedad al perfil del usuario, user_metadata.consentDate, que almacenará la fecha en que el cliente dio su consentimiento. La respuesta será el perfil completo del usuario. Los metadatos actualizados tendrán este aspecto:
{
  "consentGiven": true,
  "consentDate": "01/23/2018",
  "consentDetails": "some-url"
}

Actualizar una propiedad interna

Para actualizar una propiedad interna, debe enviar el objeto de metadatos completo, incluso si solo va a actualizar una propiedad. Si no incluye el objeto completo, Auth0 eliminará las propiedades existentes. Agreguemos una propiedad interna para la fecha de consentimiento y asignémosle 01/23/2018. Esto añadirá una nueva propiedad al perfil del usuario, user_metadata.consent.date, que contendrá la fecha en la que el cliente otorgó su consentimiento. La respuesta será el perfil completo del usuario. Los metadatos actualizados tendrán este aspecto:
{
  "consent": {
    "given": true,
    "date": "01/23/2018",
    "text_details": "some-url"
  }
}
Para exportar una lista de sus usuarios con la Management API, use el endpoint User Export. Este endpoint crea un trabajo que exporta todos los usuarios asociados a una conexión. Necesitará el ID de la conexión. Para encontrar este ID, use el endpoint Get Connections (puede establecer el parámetro name con el nombre de la conexión para obtener solo esa conexión). Una vez que tenga el ID de la conexión y un token de acceso para la Management API, estará listo para comenzar a exportar usuarios. Para ver una solicitud y una respuesta de ejemplo, lea Import and Export Users. Para saber cómo obtener un token de acceso para la Management API, lea Management API Access Tokens. También debe:
  • Determinar cómo quiere realizar el seguimiento del consentimiento. Recomendamos incluir información no solo sobre la fecha en que el usuario dio su consentimiento, sino también sobre la versión de los términos y condiciones que aceptó. También recomendamos incluir un array para almacenar información sobre los usuarios que retiran su consentimiento (recuerde que el usuario puede dar y retirar su consentimiento varias veces).
  • Elegir dónde quiere almacenar el consentimiento: en la base de datos de Auth0 o en otro lugar.
El usuario debe tener la opción de retirar su consentimiento desde su aplicación. Esta opción debe ser fácilmente accesible y claramente distinguible. Una vez que el usuario decida retirar su consentimiento, debe tomar medidas. Primero, debe decidir cómo gestionará la retirada del consentimiento: ¿eliminará a los usuarios o los marcará como eliminados?

Eliminar un usuario

Para eliminar un usuario, use el endpoint Eliminar un usuario. El cuerpo de la respuesta de este endpoint está vacío, por lo que, si desea confirmar que el usuario se eliminó correctamente, intente recuperar al usuario con su correo electrónico. Si el endpoint devuelve un error, significa que la llamada para eliminar al usuario se realizó correctamente.

Marcar al usuario como eliminado

Si no quieres eliminar al usuario, marca su perfil como eliminado mediante el endpoint app_metadata. Después, agrega código para hacer que falle el proceso de autenticación de cualquier usuario cuyo perfil esté marcado así. Esto te permite conservar un registro de los usuarios eliminados para uso futuro.

Marcar el perfil

Para marcar a un usuario como eliminado, use app_metadata. En el siguiente ejemplo, mostraremos cómo agregar una propiedad llamada deleted al campo app_metadata. Esto le permite configurar el proceso de autenticación para tratar como eliminados a todos los usuarios que tengan esta propiedad establecida en true. Para actualizar los metadatos de un usuario, use el endpoint actualizar un usuario.

Deshabilitar el inicio de sesión para usuarios marcados

A continuación, debe deshabilitar el inicio de sesión de los usuarios marcados como eliminados. Para ello, agregará una regla (un fragmento de JavaScript que se ejecuta como parte del flujo de autenticación).
  1. Vaya a Auth0 Dashboard > Auth Pipeline > Rules y cree una regla.
  2. Copie el siguiente script:
    function (user, context, callback) {
      user.app_metadata = user.app_metadata || {};
      if (user.app_metadata.deleted){
      	return callback(new UnauthorizedError('Access denied (deleted user)'));
      }
      callback(null, user, context);
    }
    
    El script hace lo siguiente:
    1. Comprueba el valor de la propiedad de metadatos deleted (user.app_metadata.deleted).
    2. Devuelve un error Access denied (deleted user) a la aplicación si user.app_metadata.deleted = true
  3. Asigne un nombre a la regla y guarde los cambios.
También debe:
  • Asegurarse de que el mecanismo de retirada del consentimiento sea suficientemente granular.
  • Configurar en la aplicación la sección en la que los clientes retirarán su consentimiento.

Más información