Inicio de sesión SystemUser

Power Portals Pro reconoce los registros de Dataverse systemuser iniciados como usuarios del portal, junto con los usuarios respaldados por defecto contact. No se requiere configuración: cuando un usuario inicia sesión mediante autenticación de Microsoft, el portal primero busca una coincidencia systemuser; si existe una, la sesión se ejecuta como ese usuario del sistema y Dataverse hace cumplir la seguridad mediante suplantación. Si no se encuentra ningún usuario del sistema coincidente, el inicio de sesión vuelve a la ruta de contacto. El mismo portal puede atender al personal interno con licencia Dataverse y a los contactos externos de clientes al mismo tiempo.

Cuando esto importa

El flujo respaldado por el usuario del sistema es útil cuando:

Solo autenticación de Microsoft

Solo el proveedor externo de Microsoft / Entra ID puede resolver a un usuario del sistema; los usuarios son emparejados contra systemuser.azureactivedirectoryobjectid, y cualquier usuario del sistema con isdisabled = true queda bloqueado. Nombre de usuario/contraseña local y otros proveedores externos (Google, etc.) siempre inician sesión como contacto.

Cómo funciona

En un inicio de sesión de Microsoft, el portal:

  1. Consulta el ID de objeto de Azure AD autenticado contra systemuser.azureactivedirectoryobjectid. Si un registro activo coincide, la sesión queda vinculada a ese usuario del sistema.
  2. De lo contrario, vuelve al flujo de contacto (coincidiendo con el inicio de sesión externo a través de adx_externalidentity).
  3. Para las sesiones de systemuser, ServiceClient.CallerId se establece para systemuserid que cada llamada a Dataverse se ejecute como el usuario iniciado sesión — con sus roles de seguridad, alcance de unidad de negocio y acceso a nivel de fila. El lado ITablePermissionHandler del portal / ITableRecordPermissionHandler las instancias se omiten para la solicitud.
  4. Las cuadras, formularios y botones reflejan los privilegios reales del usuario en Dataverse, calculados y RetrieveUserPrivilegesRequest almacenados en caché por usuario. Las sesiones de contacto continúan fluyendo a través de los manejadores registrados como antes.

Modelo de seguridad

Para sesiones respaldadas por systemuser, porque CallerId la suplantación delega la aplicación a Dataverse:

Administradores: pruebas como contacto

Los administradores del portal suelen necesitar verificar la experiencia del lado del contacto: ¿la página principal se renderiza correctamente para un cliente iniciado sesión? ¿Este caso oculta correctamente ese botón de la barra de herramientas? — sin perder su capacidad para realizar acciones administrativas. Power Portals Pro soporta esto directamente: un administrador puede mantener un inicio de sesión de Microsoft vinculado tanto systemuser a una (su cuenta interna) como a contact (un registro de prueba, o su propio registro del lado del cliente), y alternar entre ambos sin cerrar sesión.

Audiencias mixtas: diseña tus datos en consecuencia

Un único portal puede servir tanto a usuarios de sistema como a usuarios de contacto en el mismo despliegue. Si tus personalizaciones incluyen filtros FetchXML que asignan filas adx_contactid == currentUserId (un patrón común en portales solo de contacto), esos filtros no tendrán sentido cuando el usuario iniciado sesión es un usuario del sistema. Haz ramificaciones en tu código de personalización en el tipo de usuario para que cada audiencia vea los datos apropiados para él.

Cachés de privilegios

El mapa de metadatos de privilegios a nivel de entorno se carga una vez al iniciar la aplicación y se almacena en caché indefinidamente; Reiniciar la aplicación (o llamada IPrivilegeMetadataCache.InvalidateAsync) para detectar nuevas tablas o cambios en el esquema de privilegios. Los privilegios efectivos de cada usuario del sistema iniciado sesión se almacenan en caché durante 24 horas y pueden ser expulsados con IUserPrivilegeCache.InvalidateAsync(userId).