Récupérer l'utilisateur système de l'utilisateur connecté en sécurité

  • Récupérer l'utilisateur système de l'utilisateur connecté en sécurité

    Posté par Alexandre sur 12 octobre 2023 at 22h17

    Bien souvent au démarrage de nos applications Power Apps nous commençons par récupérer l’utilisateur system (systemuser de 💽 Dataverse) de l’utilisateur connecté. Pour cela on utilise souvent la fonction User() que nous confrontons par un lookup à notre table Utilisateurs. C’est très pratique car après nous pourrons par exemple en déduire le rôle de cet utilisateur (et donc très stratégique )

    Le problème

    Le problème c’est la sécurité. En effet en faisant le lookup, vous faites apparaitre en clair des infos côté client, et il est alors très facile à un utilisateur un peu malin de modifier ce comportement afin d’envoyer une autre info et ainsi corrompre le bon fonctionnement de votre application.

    Une solution

    En utilisant les vues des tables dataverses vous pourrez récupérer l’utilisateur connecté sans communiquer d’informations.

    Pour ce faire vous devez d’abord créer une vue filtrée sur la table Utilisateurs. Le filtre est le suivant :

    Ce filtre n’affichera que les enregistrements de la table Utilisateurs dont l’utilisateur est celui connecté. Donc cette vue ne retourne que l’utilisateur connecté.

    Ensuite depuis power apps vous pouvez appeler cette vue filtrée sur un Filter(…). Cela retournera une liste de un et un seul enregistrement et il faudra donc prendre le premier pour n’avoir que l’enregistrement recherché : l’utilisateur connecté. Voici la formule powerFX :

    Set(n     varConnectedUser;n     First(n         Filter(n             Utilisateurs;n             'Utilisateurs (Affichages)'.'Utilisateur connecté'n         )n     )n )

    Et voilà !

    Pour conclure :

    • ayez toujours en tête qu’un lookup ou un filter passent par le navigateur et que par conséquent il peut être exploité pour provoquer un fonctionnement non désiré de votre application

    • utilisez les vues sur vos tables : cela simplifie bien souvent les filtrages puisqu’ils pourront pour partie être exécutés côté back office donc de manière sécurisée et non exploitable par les utilisateurs

    PostID=PeR5Fru5BqRZTGW

    Alexandre a répondu 11 months, 3 weeks ago 1 Membre · 0 Réponses
  • 0 Réponses

Sorry, there were no replies found.

Connectez-vous pour répondre.