Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Ruedi am 14.07.11 - 12:03:02
-
Ich habe eine ID, die berechtigt ist, als Autor auf die DB zuzugreifen. Der Zugriff erfolgt aus einer andern DB über einen Agenten. Nun will ich nicht, dass diese ID die DB öffnen kann und dort direkt Änderungen vornimmt.
Mein Ansatz war nun, im Postopen-Event des Database-Skripts zu prüfen, ob der aktuelle User zum Zugriff berechtigt ist. Falls nicht, habe ich die DB mit Source.Close() wieder geschlossen.
Das funktionierte auch sehr schön. Allerdings funktioniert es offenbar nicht mehr, wenn ich die DB in einem Frameset öffne, der selbst wieder Framesets enthält. Source.Close() wird in diesem Fall einfach ignoriert.
Gibts einen einfachen Workaround, den ich standhaft übersehe? Oder gibts eine andere, bessere Lösung für mein Problem? Danke für eure Hilfe!
Ruedi
-
Ruedi, was Du da versuchst, wäre "security by obscurity". Solange der User Autor in der DB ist, kommt er auch an alle Dokumente dort ran, auf die er berechtigt ist. Das DatabaseScript lässt sich zudem einfachst umgehen.
Warum entziehst Du ihm nicht die Rechte und lässt die Sache aus der anderen DB mit einem NotesAgent.RunOnServer erledigen?
Bernhard
-
Hallo Bernhard
Ich weiss, dass dies kein Sicherheitsfeature ist (und bin deshalb mit meiner Lösung auch nicht glücklich).
NotesAgent.RunOnServer tönt gut. Würde der Zugriff dabei mit der Server-ID erfolgen? Was wäre session.EffectiveUsername? Der Signer des Agenten? Oder der Server?
Ein Problem bei dieser Lösung ist, dass ich nicht über einen selbst erstellten Agenten auf die Daten zugreife, sondern über den "ez Connector" der Firma visol. Und da müsste ich mich zunächst erkundigen, ob agent.RunOnServer da auch in irgendwelcher Form machbar ist.
Ruedi
Hier übrigens noch die Bestätigung, dass NotesUIDatabase.Close und nested Framesets offenbar nicht zusammen passen:
https://www-304.ibm.com/support/docview.wss?uid=swg1LO48820 (https://www-304.ibm.com/support/docview.wss?uid=swg1LO48820)