Berechtigungen bei REST

jumic

Neues Mitglied
Hallo zusammen,

um nur authorisierten Benutzern einen Zugriff auf einen REST Service zu bieten, habe ich die Möglichkeit, per HTTP Basic Authentication die Zugangsdaten zu übermitteln und zu prüfen. Der Benutzer kann dann entweder alle Attribute eines Objects über REST bearbeiten oder die komplette Abfrage wird abgelehnt.

Welche Möglichkeit habe ich aber, je nach Benutzer nur die Bearbeitung von bestimmten Attributen per Rest zuzulassen?

Ich habe gedacht, vielleicht die bestehende Version aus der Datenbank abzurufen und die Attribute, die ein User nicht bearbeiten darf, mit den Werten aus der Datenbank zu überschreiben. Ist das sinnvoll?

Bei einem SOAP Webservice hätte ich einfach zwei Funktionen zum Bearbeiten geschrieben, z.B.
Code:
edit()
und
Code:
editAll()
, über die dann eine unterschiedliche Anzahl an Attributen übergeben werden kann. Wobei das in meinem Verständnis bei REST so nicht gedacht ist, zwei verschiedene Methoden zum Schreiben zu erstellen.

Grüße,
Jumic
 

schlingel

Gesperrter Benutzer
Ich finde die Idee mit den "Defaultwerten" gar nicht so schlecht. Du kannst eine Klasse bauen die, die Attribute die der jeweilige Benutzer nicht sehen darf nullt bzw. andere Standardwerte reinschreibt und dann erst die Modellklasse zum JSON-Serialisierer weiterreicht.

Welches Framework verwendest du denn? Wo könntest du dich dazwischenklemmen?
 

DerFeivel

Bekanntes Mitglied
Was spricht dagegen, das edit() / editAll() auf Seiten der Businesslogik umzusetzen?

Sprich:

  1. Authentifizierungsdaten im RS ermitteln
  2. Rolle des authentifizierten Benutzers ermitteln
  3. Wenn Rolle Benutzer == 'ALL' rufe intern editAll(param1,param2,param3...) auf
  4. sonst: edit(param1)

Ein Nicht-Adminbenutzer könnte in diesem Fall zwar weitere Parameter angeben, diese würden allerdings ignoriert werden.

Ist zwar auch nicht das Gelbe vom Ei (User bekommt ggf. nicht mit, dass er nur falsche Teile des Objektes bearbeitet) aber m.E. besser als 'unnötig' Daten auszulesen, per Default zu setzen o.ä.
 

Ähnliche Java Themen

Neue Themen


Oben