Suplantación de usuario

Algunos fallos solo existen para una persona. Un registro que no se abre, un elemento de menú que no está, un total que parece incorrecto — todo depende de los roles web, permisos de tabla y roles de seguridad de Dataverse asociados a ese contacto. La suplantación de usuario permite a un administrador interno iniciar sesión como ese contacto y ver exactamente qué ve, para luego salir de nuevo.

Cuando ayuda

La suplantación responde a preguntas que una descripción del problema no puede.

Usándolo

La posibilidad está en el menú de perfil y solo aparece para los usuarios autorizados a usarla.

  1. Inicia sesión como usuario interno con el rol de administrador, luego abre el menú del perfil y elige Ver como otro usuario.
  2. Escribe al menos tres caracteres para buscar por nombre o dirección de correo electrónico, o pega un ID de usuario para obtener una coincidencia exacta.
  3. Elige a la persona y confirma. El portal se recarga como ellos — mismos roles web, mismos permisos de tabla, mismas filas.
  4. Un banner permanece fijado en la parte superior de cada página mientras dure. Elige Detener para volver a tu propia sesión.

Que puede suplantar

Se comprueban dos condiciones en el servidor para cada llamada, independientemente de lo que ofrezca la interfaz:

El objetivo siempre es un contacto del portal, resuelto solo a través de la tabla de contactos. Proporcionar el ID de otro usuario interno simplemente no resuelve — no hay camino desde aquí hasta una segunda cuenta de personal.

La suplantación solo reduce el acceso

Un usuario interno se convierte en contacto, nunca al revés ni otro usuario interno. Esa dirección es lo que mantiene la función segura para el envío: la sesión suplantada solo puede hacer menos de lo que el administrador podría hacer, así que no hay privilegio que ganar usándola.

Restringir quién puede ser suplantado

Por defecto, todo contacto activo es un candidato. Implementa IImpersonationTargetFilter para restringir eso — excluye contactos vinculados a cuentas de personal, registros fuera de la unidad de negocio del administrador o cualquier otra cosa que tu organización trate como prohibido.

El filtro regula la búsqueda y la suplantación. Un contacto que rechazas es invisible en el selector en lugar de simplemente no seleccionable — de lo contrario, la búsqueda se convertiría silenciosamente en una forma de enumerar personas que un administrador nunca podría llegar a ser.

La pista de auditoría

Se registra cada intento de salida, parada y rechazo. Las negativas se registran deliberadamente: una sola serie de éxitos no puede responder si alguien lo intentó.

Dataverse no puede registrar quién estaba detrás de la sesión

El portal se conecta a Dataverse como un único usuario de aplicación y expresa la sesión iniciada suplantando al destino. El administrador nunca se transmite, por lo que en el registro de auditoría de Dataverse "un administrador actuando como contacto" y "ese contacto iniciando sesión normalmente" son indistinguibles — y cualquier cosa escrita durante la suplantación se atribuye al contacto en createdby y modifiedby. La pista del lado del portal es el único lugar donde existe esta información, por lo que no es opcional.

De serie, cada evento se escribe en el registro de la aplicación. Implementa IImpersonationAuditSink que persista donde tu organización guarde sus registros de auditoría: los sumideros se añaden junto al incorporado en lugar de reemplazarlo.

De React

La misma experiencia se utiliza para React: una entrada en el menú de perfil, el selector y el banner. Las acciones subyacentes están activadas useAuth() si prefieres construir tu propia interfaz alrededor de ellas.

Vale la pena saberlo

  • Si el contacto suplantado cambia su contraseña a mitad de sesión, la sesión termina y vuelves al estado de cierre en vez de a tu propia cuenta. Iniciar sesión de nuevo lo restaura.
  • La suplantación no puede anidarse. Detén la sesión actual antes de empezar otra.
  • No dura más que la sesión del navegador: cerrar el navegador la termina.