Autor Thema: Verständnisproblem "Ausführen im Namen von" ?  (Gelesen 2793 mal)

Offline JayDee

  • Senior Mitglied
  • ****
  • Beiträge: 408
Verständnisproblem "Ausführen im Namen von" ?
« am: 20.07.21 - 14:23:44 »
Folgendes Problem (Notes/Domino 11.0.1 FP3)

Nutzer hat nur Leserechte in einer DB, soll aber per Aktionsbutton in einer Ansicht eine Aktion ausführen können, die Schreibrechte erfordert (es wird im Hintergrund ein Dokument benötigt/erstellt, das gespeichert werden muss).
Dazu wird der gesamte LS-Code in einen Agenten gepackt, in dessen Sicherheits-Eigenschaften unter "Ausführen im Namen von" eine hochberechtigte Entwickler- bzw. Admin-ID angegeben ist, die auch in den entsprechenden Stellen im Sicherheitsabschnitt des Serverdoks eingetragen ist. Der Agent wird dann von der vom Nutzer ausgelösten Aktion gestartet.
Das "Ausführen im Namen von" greift aber nie, es kommt immer "keine Berechtigung".
Es ist dabei egal, wie der Agent von der Aktion aus gestartet wird: ob per LS, Formel, "einfache Aktion".

Mein zweiter Ansatz war, das Problem ohne Agent zu lösen, den LS-Code direkt in die Aktion zu legen, dem Nutzer das Leser-Recht zu lassen, die entsprechende Maske "public" zu machen und "Öffentliche Dokumente schreiben" in der ACL für den Nutzer zu erlauben. Auch das klappt nicht, beim doc.Save(...) kommt wieder die Meldung dass keine Berechtigung vorliegt.
Das Einzige was so klappt: manuell über das Notes-Menü "Erstellen .... <Maskenname>". Nur nützt mir das nichts.

Ich komm hier nicht weiter, aber vielleicht hab ich heute einfach Tomaten auf den Augen  8)

Als Workaround hab ich dem Nutzer erstmal Autorrecht + Häkchen "Dokumente erstellen" gegeben.



MfG,
Thomas

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Verständnisproblem "Ausführen im Namen von" ?
« Antwort #1 am: 20.07.21 - 14:53:01 »
Call agent.RunOnServer?

Offline Riccardo Virzi

  • Junior Mitglied
  • **
  • Beiträge: 66
Re: Verständnisproblem "Ausführen im Namen von" ?
« Antwort #2 am: 20.07.21 - 14:55:47 »
Die Funktion "Ausführen im Namen von" funktioniert meines Wissens nur, wenn der Agent als Background Agent vom Server ausgeführt wird. Ist aber schon ein paar Jahre her und ich bin mir nicht zu 100% sicher.

Die zweite Möglichkeit mit einer öffentlichen Maske, funktioniert wenn das Dokument über das Erstellen Menü aufgerufen wird. Ich kenne den Script Code nicht, gehe aber davon aus, daß ein neues leeres Dokument erstellt wird. Dann wird das Feld form mit dem Maskennamen belegt und versucht zu speichern. Das kann nicht funktionieren. Eine Notes Dokument mit einer öffentlichen Maske, wird nur dann öffentlich, wenn das Feld $PublicAccess auf "1" gesetzt wird. Wenn das Dokument über das Erstellen Menü erzeugt wird, dann sorgt der Notes Client aufgrund der Maskeneigenschaften dafür, daß das Feld $PublicAccess auf "1" steht.

Im Script Code gibt es 2 Möglichkeiten:
1. doc.ReplaceItemValue( "$PublicAccess", "1" )
2. doc.ComputeWithForm()

In dem Fall würde ich die erste Option nehmen.

Offline Tode

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Verständnisproblem "Ausführen im Namen von" ?
« Antwort #3 am: 20.07.21 - 16:04:30 »
Call agent.RunonServer!

Riccardo hat es korrekt ausgeführt, warum das so ist: Für Agenten, die direkt vom Benutzer aufgerufen werden, gilt diese Property nicht. Du musst also Den User ScriptAgenten1 starten lassen, und der ruft über

Set agent = ses.CurrentDatabase.GetAgent( "AgentRunOnBehalf" )
Call agent.RunOnServer

einen weiteren Agenten auf, der dann im Kontext des Benutzers läuft, der in der Agentensecurity eingetragen ist.
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline JayDee

  • Senior Mitglied
  • ****
  • Beiträge: 408
Re: Verständnisproblem "Ausführen im Namen von" ?
« Antwort #4 am: 21.07.21 - 06:40:01 »
Alles klar, vielen Dank für die Hinweise, das werde ich probieren.
Ich kann das aus der Doku nicht so herauslesen, daher bin ich immer wieder dankbar für die guten Tipps hier  :)
MfG,
Thomas

Offline JayDee

  • Senior Mitglied
  • ****
  • Beiträge: 408
Re: Verständnisproblem "Ausführen im Namen von" ?
« Antwort #5 am: 22.07.21 - 06:43:09 »
Beide Lösungen (RunOnServer, Item $PublicAccess setzen) funktionieren.
RunOnServer konnte ich letztlich aber nicht nehmen, da auch GUI-Elemente im Spiel sind, da hätte ich zuviel umbauen müssen.
Also ist es die Variante mit dem Setzen von "$PublicAccess" auf "1" geworden.
MfG,
Thomas

Offline CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 642
  • Geschlecht: Männlich
Re: Verständnisproblem "Ausführen im Namen von" ?
« Antwort #6 am: 22.07.21 - 07:09:23 »
Also ist es die Variante mit dem Setzen von "$PublicAccess" auf "1" geworden.

Noch ein wichtiger Hinweis:

Vielen ist nicht bewusst, dass die Berechtigung Write Public Documents automatisch auch die Berechtigung zum Löschen aller öffentlichen Dokumente beinhaltet!

Insbesondere wenn sowas nachträglich in einer Anwendung eingeführt wird die vorher eine strikte Zugriffskontrolle hatte kann das verheerende Folgen haben. Absichern sollte man sich hier zumindest mit Softdeletions und einem Logging bestimmter Aktionen sowie dem gezielten Abfangen der gängigen Löschfunktionen.

HTH
Carsten
« Letzte Änderung: 22.07.21 - 07:15:24 von CarstenH »

Offline JayDee

  • Senior Mitglied
  • ****
  • Beiträge: 408
Re: Verständnisproblem "Ausführen im Namen von" ?
« Antwort #7 am: 22.07.21 - 11:22:03 »
Danke, auch das ein guter Tipp. Seltsames Verhalten...
In meinem Fall aber nicht weiter relevant, da es sich hier um temporäre technische Dokumente handelt, die nachts automatisch wieder weggeräumt werden.
MfG,
Thomas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz