Permissions : Inspecter les privilèges de la session pour faciliter le débogage

Aujourd’hui, vous pouvez bénéficier d’une fonctionnalité puissante pour filtrer l’accès aux données, ce qui est essentiel pour empêcher les accès malveillants à votre application.

Cette fonctionnalité utilise des privilèges qui permettent certaines actions sur vos données. Ces privilèges sont attribués aux utilisateurs par le biais des rôles et stockés dans la session lors de l’authentification.

Dans 4D 20R6, nous avons amélioré cette fonctionnalité en vous permettant d’inspecter les privilèges dans la session, ce qui est très utile pour le débogage.

Continuez à lire pour en savoir plus.

HDI_GetPrivileges

une nouvelle fonction getPrivileges() sur l’objet Session

Prenons un exemple.

Dans le fichier roles.json, nous avons le privilège medium qui contient le privilège simple. Le rôle Medium contient le privilège medium.

{
 "privileges": [
  {
   "privilege": "simple",
   "includes": []
  },
  {
   "privilege": "medium",
   "includes": [
     "simple"
    ]
  }
 ],
 "roles": [
  {
   "role": "Medium",
   "privileges": [
    "medium"
   ]
  }
 ],
 "permissions": {
  "allowed": [] // Set up the allowed actions here
 }
}

Dans la classe Datastore, il existe une fonction authentify() qui met tous les privilèges du rôle donné dans l’objet Session.

exposed Function authentify($role : Text) : Text
	
	Session.clearPrivileges()
	Session.setPrivileges({roles: $role})
	
	return "Authentication done with "+$role

Une fonction getPrivileges() a également été implémentée dans la classe Datastore. Elle renvoie les privilèges présents dans la Session.

exposed Function getPrivileges() : Collection
	return Session.getPrivileges()

Si la fonction authentify() est appelée avec le rôle Medium, la fonction getPrivileges() renvoie:

[
"simple",
"medium"
]

Nouvelle API REST /$info/privileges

Il existe également une nouvelle API REST pour obtenir les privilèges dans la session. L’appel à /$info/privileges dans l’exemple ci-dessus renvoie également les informations :

{
 "privileges": [
  {
  "privilege": "simple"
  },
  {
  "privilege": "medium"
  }
 ]
}

Cela facilite le débogage. Consultez la documentation pour en savoir plus.

Avatar
- Product Owner - Marie-Sophie Landrieu-Yvert a rejoint l'équipe de 4D Product en tant que Product Owner en 2017. En tant que Product Owner, elle est en charge de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation de la fonctionnalité livrée répond au besoin du client.Marie-Sophie est diplômée de l'école d'ingénieur ESIGELEC et a commencé sa carrière en tant qu'ingénieur chez IBM en 1995. Elle a participé à divers projets (projets de maintenance ou de construction) et a travaillé en tant que développeur Cobol. Elle a ensuite travaillé en tant que concepteur UML et développeur Java. Dernièrement, ses principaux rôles étaient d'analyser et de rédiger des exigences fonctionnelles, de coordonner les équipes commerciales et de développement.