Berechtigungen: Überprüfen von Zugriffsrechten für eine einfache Fehlersuche

Heute können Sie von einer leistungsstarken Funktion zur Filterung des Datenzugriffs profitieren, die für die Verhinderung eines bösartigen Zugriffs auf Ihre Anwendung unerlässlich ist.

Diese Funktion verwendet Privilegien, die bestimmte Aktionen für Ihre Daten erlauben. Diese Privilegien werden Benutzern über Rollen zugewiesen und während der Authentifizierung in der Sitzung gespeichert.

In 4D 20R6 haben wir diese Funktionalität erweitert, indem wir Ihnen die Möglichkeit gegeben haben, die Privilegien in der Session einzusehen, was für die Fehlersuche sehr hilfreich ist.

Lesen Sie weiter, um mehr zu erfahren.

HDI_GetPrivileges

eine neue getPrivileges()-Funktion für das Session-Objekt

Schauen wir uns ein Beispiel an.

In der Datei roles.json haben wir das Medium-Privileg, das das einfache Privileg enthält. Die Rolle Medium enthält das mittlere Privileg.

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

In der Klasse Datastore gibt es eine Funktion authentify(), die alle Berechtigungen der gegebenen Rolle der Session zuweist.

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

In der Datastore-Klasse wurde auch eine getPrivileges() Funktion implementiert. Sie gibt die Privilegien in der Session zurück.

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

Wenn die Funktion authentify() mit der Rolle Medium aufgerufen wird, gibt die Funktion getPrivileges() zurück:

[
"simple",
"medium"
]

Neue /$info/privileges RESt API

Es gibt auch eine neue REST-API zum Abrufen der Privilegien in der Sitzung. Der Aufruf von /$info/privileges im obigen Beispiel gibt ebenfalls zurück:

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

Dies erleichtert das Debugging. Lesen Sie die Dokumentation, um mehr zu erfahren.

Avatar
- Product Owner - Marie-Sophie Landrieu-Yvert ist seit 2017 als Product Owner im 4D Produktteam tätig. Als Product Owner ist sie für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen zuständig. Ihre Aufgabe ist es auch, sicherzustellen, dass die Implementierung der Funktionen den Anforderungen des Kunden entspricht. Marie-Sophie ist Absolventin der ESIGELEC Ingenieurschule und begann ihre Karriere als Ingenieurin bei IBM im Jahr 1995. Sie nahm an verschiedenen Projekten teil (Wartungs- oder Build-Projekte) und arbeitete als Cobol-Entwicklerin. Dann arbeitete sie als UML-Designerin und Java-Entwicklerin. In letzter Zeit bestand ihre Hauptaufgabe darin, funktionale Anforderungen zu analysieren und zu schreiben sowie Geschäfts- und Entwicklungsteams zu koordinieren.