Login SystemUser

O Power Portals Pro reconhece registros do Dataverse systemuser logados como usuários do portal — junto com os usuários respaldados por padrão contact. Não é necessária configuração: quando um usuário faz login via autenticação Microsoft, o portal primeiro procura uma correspondência systemuser; se existir uma, a sessão roda como aquele usuário do sistema e o Dataverse impõe a segurança por meio da personificação. Se nenhum usuário do sistema correspondente for encontrado, o login retorna ao caminho de contato. O mesmo portal pode atender funcionários internos licenciados pelo Dataverse e contatos externos de clientes ao mesmo tempo.

Quando isso importa

O fluxo respaldado pelo usuário do sistema é útil quando:

Apenas autenticação Microsoft

Somente o provedor externo Microsoft / Entra ID pode resolver para um usuário do sistema; os usuários são pareados contra systemuser.azureactivedirectoryobjectid, e qualquer usuário do sistema com isdisabled = true é bloqueado. Nome de usuário/senha local e outros provedores externos (Google, etc.) sempre fazem login como contato.

Como funciona

Em um login da Microsoft, o portal:

  1. Consulta o ID de Objeto Azure AD autenticado contra systemuser.azureactivedirectoryobjectid. Se um registro ativo coincidir, a sessão é vinculada àquele usuário do sistema.
  2. Caso contrário, retorna ao fluxo de contato (correspondendo ao login externo através adx_externalidentityde ).
  3. Para sessões de usuário do sistema, ServiceClient.CallerId está definido para systemuserid que toda chamada Dataverse seja executada como o usuário logado — com seus papéis de segurança, escopo da unidade de negócios e acesso em nível de linha. O lado ITablePermissionHandler do portal / ITableRecordPermissionHandler instâncias são ignorados para o pedido.
  4. Grades, formulários e botões refletem os privilégios reais do usuário no Dataverse — calculados e RetrieveUserPrivilegesRequest armazenados em cache por usuário. As sessões de contato continuam a fluir pelos manipuladores registrados como antes.

Modelo de segurança

Para sessões suportadas por systemuser, porque CallerId a personificação delega a aplicação ao Dataverse:

Administradores: testes como contato

Os administradores do portal normalmente precisam verificar a experiência do lado do contato — a página inicial é renderizada corretamente para um cliente logado? Esse caso esconde corretamente o botão da barra de ferramentas? — sem perder a capacidade de realizar ações administrativas. O Power Portals Pro suporta isso diretamente: um administrador pode manter um login Microsoft vinculado tanto systemuser a um (conta interna deles) quanto a contact um (registro de teste, ou seu próprio registro do lado do cliente), e alternar entre os dois sem fazer logout.

Públicos mistos: projetem seus dados de acordo

Um único portal pode atender tanto usuários do sistema quanto usuários de contato na mesma implantação. Se suas personalizações incluem filtros FetchXML que definem linhas ( adx_contactid == currentUserId um padrão comum em portais apenas de contato), esses filtros não farão sentido quando o usuário logado for um usuário do sistema. Faça ramificações no código de personalização no tipo de usuário para que cada público veja os dados adequados para ele.

Caches de privilégios

O mapa de metadados de privilégios em todo o ambiente é carregado uma vez na inicialização da aplicação e armazenado em cache indefinidamente; Reinicie a aplicação (ou chamada IPrivilegeMetadataCache.InvalidateAsync) para captar novas tabelas ou alterações no esquema de privilégios. Os privilégios efetivos de cada usuário do sistema logado são armazenados em cache por 24 horas e podem ser despejados com IUserPrivilegeCache.InvalidateAsync(userId).