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.
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.