AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
03.08.21 - 07:09:28
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  HCL Notes / Domino / Diverses
| |-+  Entwicklung (Moderatoren: eknori, fritandr, koehlerbv, Tode)
| | |-+  Verständnisproblem "Ausführen im Namen von" ?
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Verständnisproblem "Ausführen im Namen von" ?  (Gelesen 479 mal)
JayDee
Senior Mitglied
****
Offline Offline

Beiträge: 310


« 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  Cool

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



Gespeichert

MfG,
Thomas
Peter Klett
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 2704



« Antworten #1 am: 20.07.21 - 14:53:01 »

Call agent.RunOnServer?
Gespeichert
Riccardo Virzi
Frischling
*
Offline Offline

Beiträge: 30



« Antworten #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.
Gespeichert
Tode
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6610


Geht nicht, gibt's (fast) nicht... *g*


WWW
« Antworten #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.
Gespeichert

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

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
JayDee
Senior Mitglied
****
Offline Offline

Beiträge: 310


« Antworten #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  Smiley
Gespeichert

MfG,
Thomas
JayDee
Senior Mitglied
****
Offline Offline

Beiträge: 310


« Antworten #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.
Gespeichert

MfG,
Thomas
CarstenH
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 417



« Antworten #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 » Gespeichert
JayDee
Senior Mitglied
****
Offline Offline

Beiträge: 310


« Antworten #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.
Gespeichert

MfG,
Thomas
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: